Skip to content
This repository was archived by the owner on Jun 26, 2021. It is now read-only.

Commit 32df137

Browse files
committed
Merge branch 'hallvard-issue70'
2 parents e7d28b2 + 7aebd6f commit 32df137

12 files changed

Lines changed: 1331 additions & 784 deletions

File tree

emfjson-jackson/src/main/java/org/emfjson/jackson/databind/deser/EObjectDeserializer.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -269,7 +269,7 @@ private void readReference(JsonParser jp, EObject owner,
269269
private void readAttribute(JsonParser jp, EObject owner,
270270
EAttribute attribute, Resource resource,
271271
DeserializationContext ctxt) throws IOException {
272-
final EDataType dataType = attribute.getEAttributeType();
272+
final EDataType dataType = (EDataType) owner.eClass().getFeatureType(attribute).getEClassifier();
273273
if (dataType == null) {
274274
resource.getErrors().add(new JSONException("Missing feature type", jp.getCurrentLocation()));
275275
jp.nextToken();

emfjson-jackson/src/main/java/org/emfjson/jackson/databind/ser/EObjectSerializer.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -78,7 +78,7 @@ public void serialize(EObject object, JsonGenerator jg, SerializerProvider provi
7878
if (EObjects.isFeatureMap(attribute)) {
7979
writeFeatureMap(object, attribute, jg, provider);
8080
} else {
81-
writeAttribute(jg, attribute.getEAttributeType(), field, value);
81+
writeAttribute(jg, (EDataType) object.eClass().getFeatureType(attribute).getEClassifier(), field, value);
8282
}
8383
}
8484
}

emfjson-jackson/src/test/java/org/emfjson/jackson/junit/TestSuite.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,7 @@
3232
ModuleTest.class,
3333
NoTypeTest.class,
3434
PolymorphicTest.class,
35+
GenericTest.class,
3536
ProxyAttributeTest.class,
3637
ReaderTest.class,
3738
ReferenceTest.class,
Lines changed: 154 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,154 @@
1+
/**
2+
*/
3+
package org.emfjson.jackson.junit.model;
4+
5+
import java.util.Collection;
6+
import java.util.List;
7+
import org.eclipse.emf.common.notify.NotificationChain;
8+
9+
import org.eclipse.emf.common.util.EList;
10+
import org.eclipse.emf.ecore.EClass;
11+
import org.eclipse.emf.ecore.EObject;
12+
import org.eclipse.emf.ecore.InternalEObject;
13+
import org.eclipse.emf.ecore.impl.MinimalEObjectImpl;
14+
import org.eclipse.emf.ecore.util.EObjectContainmentEList;
15+
import org.eclipse.emf.ecore.util.InternalEList;
16+
17+
/**
18+
* <!-- begin-user-doc -->
19+
* A representation of the model object '<em><b>Generic Container</b></em>'.
20+
* <!-- end-user-doc -->
21+
*
22+
* <p>
23+
* The following features are supported:
24+
* </p>
25+
* <ul>
26+
* <li>{@link org.emfjson.jackson.junit.model.GenericContainer#getValues <em>Values</em>}</li>
27+
* </ul>
28+
*
29+
* @generated
30+
*/
31+
public class GenericContainer extends MinimalEObjectImpl.Container implements EObject {
32+
/**
33+
* The cached value of the '{@link #getValues() <em>Values</em>}' containment reference list.
34+
* <!-- begin-user-doc -->
35+
* <!-- end-user-doc -->
36+
* @see #getValues()
37+
* @generated
38+
* @ordered
39+
*/
40+
protected EList<GenericType<?>> values;
41+
42+
/**
43+
* <!-- begin-user-doc -->
44+
* <!-- end-user-doc -->
45+
* @generated
46+
*/
47+
protected GenericContainer() {
48+
super();
49+
}
50+
51+
/**
52+
* <!-- begin-user-doc -->
53+
* <!-- end-user-doc -->
54+
* @generated
55+
*/
56+
@Override
57+
protected EClass eStaticClass() {
58+
return ModelPackage.Literals.GENERIC_CONTAINER;
59+
}
60+
61+
/**
62+
* Returns the value of the '<em><b>Values</b></em>' containment reference list.
63+
* The list contents are of type {@link org.emfjson.jackson.junit.model.GenericType}&lt;?>.
64+
* <!-- begin-user-doc -->
65+
* <p>
66+
* If the meaning of the '<em>Values</em>' containment reference isn't clear,
67+
* there really should be more of a description here...
68+
* </p>
69+
* <!-- end-user-doc -->
70+
* @return the value of the '<em>Values</em>' containment reference list.
71+
* @generated
72+
*/
73+
public List<GenericType<?>> getValues() {
74+
if (values == null) {
75+
values = new EObjectContainmentEList.Resolving<GenericType<?>>(GenericType.class, this, ModelPackage.GENERIC_CONTAINER__VALUES);
76+
}
77+
return values;
78+
}
79+
80+
/**
81+
* <!-- begin-user-doc -->
82+
* <!-- end-user-doc -->
83+
* @generated
84+
*/
85+
@Override
86+
public NotificationChain eInverseRemove(InternalEObject otherEnd, int featureID, NotificationChain msgs) {
87+
switch (featureID) {
88+
case ModelPackage.GENERIC_CONTAINER__VALUES:
89+
return ((InternalEList<?>)getValues()).basicRemove(otherEnd, msgs);
90+
}
91+
return super.eInverseRemove(otherEnd, featureID, msgs);
92+
}
93+
94+
/**
95+
* <!-- begin-user-doc -->
96+
* <!-- end-user-doc -->
97+
* @generated
98+
*/
99+
@Override
100+
public Object eGet(int featureID, boolean resolve, boolean coreType) {
101+
switch (featureID) {
102+
case ModelPackage.GENERIC_CONTAINER__VALUES:
103+
return getValues();
104+
}
105+
return super.eGet(featureID, resolve, coreType);
106+
}
107+
108+
/**
109+
* <!-- begin-user-doc -->
110+
* <!-- end-user-doc -->
111+
* @generated
112+
*/
113+
@SuppressWarnings("unchecked")
114+
@Override
115+
public void eSet(int featureID, Object newValue) {
116+
switch (featureID) {
117+
case ModelPackage.GENERIC_CONTAINER__VALUES:
118+
getValues().clear();
119+
getValues().addAll((Collection<? extends GenericType<?>>)newValue);
120+
return;
121+
}
122+
super.eSet(featureID, newValue);
123+
}
124+
125+
/**
126+
* <!-- begin-user-doc -->
127+
* <!-- end-user-doc -->
128+
* @generated
129+
*/
130+
@Override
131+
public void eUnset(int featureID) {
132+
switch (featureID) {
133+
case ModelPackage.GENERIC_CONTAINER__VALUES:
134+
getValues().clear();
135+
return;
136+
}
137+
super.eUnset(featureID);
138+
}
139+
140+
/**
141+
* <!-- begin-user-doc -->
142+
* <!-- end-user-doc -->
143+
* @generated
144+
*/
145+
@Override
146+
public boolean eIsSet(int featureID) {
147+
switch (featureID) {
148+
case ModelPackage.GENERIC_CONTAINER__VALUES:
149+
return values != null && !values.isEmpty();
150+
}
151+
return super.eIsSet(featureID);
152+
}
153+
154+
} // GenericContainer
Lines changed: 163 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,163 @@
1+
/**
2+
*/
3+
package org.emfjson.jackson.junit.model;
4+
5+
import org.eclipse.emf.common.notify.Notification;
6+
7+
import org.eclipse.emf.ecore.EClass;
8+
import org.eclipse.emf.ecore.EObject;
9+
10+
import org.eclipse.emf.ecore.impl.ENotificationImpl;
11+
import org.eclipse.emf.ecore.impl.MinimalEObjectImpl;
12+
13+
/**
14+
* <!-- begin-user-doc -->
15+
* A representation of the model object '<em><b>Generic Type</b></em>'.
16+
* <!-- end-user-doc -->
17+
*
18+
* <p>
19+
* The following features are supported:
20+
* </p>
21+
* <ul>
22+
* <li>{@link org.emfjson.jackson.junit.model.GenericType#getValue <em>Value</em>}</li>
23+
* </ul>
24+
*
25+
* @generated
26+
*/
27+
public abstract class GenericType<T> extends MinimalEObjectImpl.Container implements EObject {
28+
/**
29+
* The cached value of the '{@link #getValue() <em>Value</em>}' attribute.
30+
* <!-- begin-user-doc -->
31+
* <!-- end-user-doc -->
32+
* @see #getValue()
33+
* @generated
34+
* @ordered
35+
*/
36+
protected T value;
37+
38+
/**
39+
* <!-- begin-user-doc -->
40+
* <!-- end-user-doc -->
41+
* @generated
42+
*/
43+
protected GenericType() {
44+
super();
45+
}
46+
47+
/**
48+
* <!-- begin-user-doc -->
49+
* <!-- end-user-doc -->
50+
* @generated
51+
*/
52+
@Override
53+
protected EClass eStaticClass() {
54+
return ModelPackage.Literals.GENERIC_TYPE;
55+
}
56+
57+
/**
58+
* Returns the value of the '<em><b>Value</b></em>' attribute.
59+
* <!-- begin-user-doc -->
60+
* <p>
61+
* If the meaning of the '<em>Value</em>' attribute isn't clear,
62+
* there really should be more of a description here...
63+
* </p>
64+
* <!-- end-user-doc -->
65+
* @return the value of the '<em>Value</em>' attribute.
66+
* @see #setValue(Object)
67+
* @generated
68+
*/
69+
public T getValue() {
70+
return value;
71+
}
72+
73+
/**
74+
* Sets the value of the '{@link org.emfjson.jackson.junit.model.GenericType#getValue <em>Value</em>}' attribute.
75+
* <!-- begin-user-doc -->
76+
* <!-- end-user-doc -->
77+
* @param value the new value of the '<em>Value</em>' attribute.
78+
* @see #getValue()
79+
* @generated
80+
*/
81+
public void setValue(T newValue) {
82+
T oldValue = value;
83+
value = newValue;
84+
if (eNotificationRequired())
85+
eNotify(new ENotificationImpl(this, Notification.SET, ModelPackage.GENERIC_TYPE__VALUE, oldValue, value));
86+
}
87+
88+
/**
89+
* <!-- begin-user-doc -->
90+
* <!-- end-user-doc -->
91+
* @generated
92+
*/
93+
@Override
94+
public Object eGet(int featureID, boolean resolve, boolean coreType) {
95+
switch (featureID) {
96+
case ModelPackage.GENERIC_TYPE__VALUE:
97+
return getValue();
98+
}
99+
return super.eGet(featureID, resolve, coreType);
100+
}
101+
102+
/**
103+
* <!-- begin-user-doc -->
104+
* <!-- end-user-doc -->
105+
* @generated
106+
*/
107+
@SuppressWarnings("unchecked")
108+
@Override
109+
public void eSet(int featureID, Object newValue) {
110+
switch (featureID) {
111+
case ModelPackage.GENERIC_TYPE__VALUE:
112+
setValue((T)newValue);
113+
return;
114+
}
115+
super.eSet(featureID, newValue);
116+
}
117+
118+
/**
119+
* <!-- begin-user-doc -->
120+
* <!-- end-user-doc -->
121+
* @generated
122+
*/
123+
@Override
124+
public void eUnset(int featureID) {
125+
switch (featureID) {
126+
case ModelPackage.GENERIC_TYPE__VALUE:
127+
setValue((T)null);
128+
return;
129+
}
130+
super.eUnset(featureID);
131+
}
132+
133+
/**
134+
* <!-- begin-user-doc -->
135+
* <!-- end-user-doc -->
136+
* @generated
137+
*/
138+
@Override
139+
public boolean eIsSet(int featureID) {
140+
switch (featureID) {
141+
case ModelPackage.GENERIC_TYPE__VALUE:
142+
return value != null;
143+
}
144+
return super.eIsSet(featureID);
145+
}
146+
147+
/**
148+
* <!-- begin-user-doc -->
149+
* <!-- end-user-doc -->
150+
* @generated
151+
*/
152+
@Override
153+
public String toString() {
154+
if (eIsProxy()) return super.toString();
155+
156+
StringBuffer result = new StringBuffer(super.toString());
157+
result.append(" (value: ");
158+
result.append(value);
159+
result.append(')');
160+
return result.toString();
161+
}
162+
163+
} // GenericType

0 commit comments

Comments
 (0)