[jackson-annotations] 20/207: ...
Timo Aaltonen
tjaalton at moszumanska.debian.org
Sat Sep 6 13:55:35 UTC 2014
This is an automated email from the git hooks/post-receive script.
tjaalton pushed a commit to branch master
in repository jackson-annotations.
commit 35a2ace0dc7f29bf7662c7b647edf74920a5987e
Author: Tatu <tatu at ning.com>
Date: Tue Feb 7 17:17:25 2012 -0800
...
---
.../jackson/annotation/ObjectIdGenerator.java | 59 ++++++++++++++++--
.../jackson/annotation/ObjectIdGenerators.java | 71 +++++++++++++---------
2 files changed, 96 insertions(+), 34 deletions(-)
diff --git a/src/main/java/com/fasterxml/jackson/annotation/ObjectIdGenerator.java b/src/main/java/com/fasterxml/jackson/annotation/ObjectIdGenerator.java
index d4b0dac..0b86233 100644
--- a/src/main/java/com/fasterxml/jackson/annotation/ObjectIdGenerator.java
+++ b/src/main/java/com/fasterxml/jackson/annotation/ObjectIdGenerator.java
@@ -10,19 +10,39 @@ package com.fasterxml.jackson.annotation;
*/
public abstract class ObjectIdGenerator<T>
{
+ /*
+ /**********************************************************
+ /* Accessors
+ /**********************************************************
+ */
+
+ public abstract Class<?> getScope();
+
+ /*
+ /**********************************************************
+ /* Factory methods
+ /**********************************************************
+ */
+
+ /**
+ * Factory method to create a blueprint instance for specified
+ * scope. Generator that do not use scope may return 'this'.
+ */
+ public abstract ObjectIdGenerator<T> forScope(Class<?> scope);
+
/**
* Factory method called to create a new instance to use for
* serialization. This includes initializing storage for keeping
* track of serialized instances, along with id used.
*/
- public abstract ObjectIdGenerator<T> newForSerialization(Class<?> scope);
+ public abstract ObjectIdGenerator<T> newForSerialization();
/**
* Factory method called to create a new instance to use for
* serialization. This includes initializing storage for keeping
* track of deserialized instances, along with id used.
*/
- public abstract ObjectIdGenerator<T> newForDeserialization(Class<?> scope);
+ public abstract ObjectIdGenerator<T> newForDeserialization();
/**
* Method called to check whether this generator instance can
@@ -31,10 +51,22 @@ public abstract class ObjectIdGenerator<T>
*
* @return True if this instance can be used as-is; false if not
*/
- public abstract boolean canUseFor(ObjectIdGenerator<?> gen, Class<?> scope);
+ public abstract boolean canUseFor(ObjectIdGenerator<?> gen);
+
+ /*
+ /**********************************************************
+ /* Methods for serialization
+ /**********************************************************
+ */
/**
- * Method used for generating an Object Identifier to serialize
+ * Method used during serialization, to try to find an Object Id for given already serialized
+ * Object: if none found, returns null.
+ */
+ public abstract T findId(Object forPojo);
+
+ /**
+ * Method used for generating a new Object Identifier to serialize
* for given POJO.
*
* @param forPojo POJO for which identifier is needed
@@ -42,4 +74,23 @@ public abstract class ObjectIdGenerator<T>
* @return Object Identifier to use.
*/
public abstract T generateId(Object forPojo);
+
+ /*
+ /**********************************************************
+ /* Methods for deserialization
+ /**********************************************************
+ */
+
+ /**
+ * Method used during deserialization, to try to find an item for which given
+ * id was used.
+ */
+ public abstract Object findItem(T id);
+
+ /**
+ * Method called during deserialization to establishing mapping between
+ * given item, and the id it was using.
+ */
+ public abstract void addItem(Object item, T id);
+
}
diff --git a/src/main/java/com/fasterxml/jackson/annotation/ObjectIdGenerators.java b/src/main/java/com/fasterxml/jackson/annotation/ObjectIdGenerators.java
index 31280d6..9cceb3d 100644
--- a/src/main/java/com/fasterxml/jackson/annotation/ObjectIdGenerators.java
+++ b/src/main/java/com/fasterxml/jackson/annotation/ObjectIdGenerators.java
@@ -34,22 +34,25 @@ public class ObjectIdGenerators
}
@Override
- public boolean canUseFor(ObjectIdGenerator<?> gen, Class<?> scope) {
- return (gen.getClass() == getClass()) && (scope == _scope);
+ public final Class<?> getScope() {
+ return _scope;
}
- public Class<?> getScope() {
- return _scope;
+ @Override
+ public boolean canUseFor(ObjectIdGenerator<?> gen) {
+ return (gen.getClass() == getClass()) && (gen.getScope() == _scope);
}
- protected T findId(Object item) {
+ @Override
+ public T findId(Object item) {
if (_ids == null) {
return null;
}
return _ids.get(item);
}
- protected Object findItem(T id) {
+ @Override
+ public Object findItem(T id) {
if (_items == null) {
return null;
}
@@ -57,26 +60,24 @@ public class ObjectIdGenerators
}
/**
- * Method called during serialization to keep track of ids we have
- * used.
- */
- protected void addId(Object item, T id) {
- if (_ids == null) {
- _ids = new IdentityHashMap<Object, T>(16);
- }
- _ids.put(item, id);
- }
-
- /**
* Method called during deserialization to keep track of items we have
* deserialized, along with ids they had.
*/
- protected void addItem(Object item, T id) {
+ @Override
+ public void addItem(Object item, T id) {
if (_items == null) {
_items = new IdentityHashMap<T, Object>(16);
}
_ids.put(item, id);
}
+
+ protected void addId(Object item, T id) {
+ if (_ids == null) {
+ _ids = new IdentityHashMap<Object, T>(16);
+ }
+ _ids.put(item, id);
+ }
+
}
/*
@@ -106,21 +107,27 @@ public class ObjectIdGenerators
{
protected int _nextValue;
- public IntSequenceGenerator() { this(Object.class, 1); }
+ public IntSequenceGenerator() { this(Object.class, -1); }
public IntSequenceGenerator(Class<?> scope, int fv) {
super(scope);
_nextValue = fv;
}
+ protected int initialValue() { return 1; }
+
@Override
- public ObjectIdGenerator<Integer> newForSerialization(Class<?> scope) {
- return new IntSequenceGenerator(scope, _nextValue);
+ public ObjectIdGenerator<Integer> forScope(Class<?> scope) {
+ return (_scope == scope) ? this : new IntSequenceGenerator(scope, _nextValue);
+ }
+
+ @Override
+ public ObjectIdGenerator<Integer> newForSerialization() {
+ return new IntSequenceGenerator(_scope, initialValue());
}
- // we don't really need value for deserialization but...
@Override
- public ObjectIdGenerator<Integer> newForDeserialization(Class<?> scope) {
- return new IntSequenceGenerator(scope, _nextValue);
+ public ObjectIdGenerator<Integer> newForDeserialization() {
+ return new IntSequenceGenerator(_scope, initialValue());
}
@Override
@@ -142,22 +149,27 @@ public class ObjectIdGenerators
public UUIDGenerator(Class<?> scope) {
super(scope);
}
+
+ @Override
+ public ObjectIdGenerator<UUID> forScope(Class<?> scope) {
+ return (_scope == scope) ? this : new UUIDGenerator(scope);
+ }
@Override
- public ObjectIdGenerator<UUID> newForSerialization(Class<?> scope) {
- return new UUIDGenerator(scope);
+ public ObjectIdGenerator<UUID> newForSerialization() {
+ return new UUIDGenerator(_scope);
}
@Override
- public ObjectIdGenerator<UUID> newForDeserialization(Class<?> scope) {
- return new UUIDGenerator(scope);
+ public ObjectIdGenerator<UUID> newForDeserialization() {
+ return new UUIDGenerator(_scope);
}
/**
* Since UUIDs are always unique, let's fully ignore scope definition
*/
@Override
- public boolean canUseFor(ObjectIdGenerator<?> gen, Class<?> scope) {
+ public boolean canUseFor(ObjectIdGenerator<?> gen) {
return (gen.getClass() == getClass());
}
@@ -166,5 +178,4 @@ public class ObjectIdGenerators
return UUID.randomUUID();
}
}
-
}
--
Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/pkg-java/jackson-annotations.git
More information about the pkg-java-commits
mailing list