|
15 | 15 | import org.eclipse.jdt.core.dom.Expression; |
16 | 16 | import org.eclipse.jdt.core.dom.FieldDeclaration; |
17 | 17 | import org.eclipse.jdt.core.dom.Modifier.ModifierKeyword; |
18 | | -import org.eclipse.jdt.core.dom.Name; |
19 | | -import org.eclipse.jdt.core.dom.PrimitiveType; |
20 | | -import org.eclipse.jdt.core.dom.PrimitiveType.Code; |
21 | 18 | import org.eclipse.jdt.core.dom.VariableDeclarationFragment; |
22 | 19 | import org.jboss.forge.roaster.Roaster; |
23 | 20 | import org.jboss.forge.roaster.model.Annotation; |
|
29 | 26 | import org.jboss.forge.roaster.model.ast.ModifierAccessor; |
30 | 27 | import org.jboss.forge.roaster.model.source.AnnotationSource; |
31 | 28 | import org.jboss.forge.roaster.model.source.FieldSource; |
| 29 | +import org.jboss.forge.roaster.model.source.JavaClassSource; |
32 | 30 | import org.jboss.forge.roaster.model.source.JavaSource; |
33 | 31 | import org.jboss.forge.roaster.model.util.Strings; |
34 | 32 | import org.jboss.forge.roaster.model.util.Types; |
@@ -339,43 +337,15 @@ public FieldSource<O> setType(final String typeName) |
339 | 337 | origin.addImport(typeName); |
340 | 338 | } |
341 | 339 |
|
342 | | - Code primitive = PrimitiveType.toCode(typeName); |
| 340 | + String stub = "public class Stub { " + simpleName + " field; }"; |
| 341 | + JavaClassSource temp = (JavaClassSource) Roaster.parse(stub); |
| 342 | + List<FieldSource<JavaClassSource>> fields = temp.getFields(); |
| 343 | + org.eclipse.jdt.core.dom.Type fieldType = ((FieldDeclaration) ((VariableDeclarationFragment) fields.get(0) |
| 344 | + .getInternal()).getParent()).getType(); |
| 345 | + |
| 346 | + fieldType = (org.eclipse.jdt.core.dom.Type) ASTNode.copySubtree(field.getAST(), fieldType); |
| 347 | + field.setType(fieldType); |
343 | 348 |
|
344 | | - org.eclipse.jdt.core.dom.Type type = null; |
345 | | - if (primitive != null) |
346 | | - { |
347 | | - type = ast.newPrimitiveType(primitive); |
348 | | - } |
349 | | - else |
350 | | - { |
351 | | - if (!origin.requiresImport(typeName)) |
352 | | - { |
353 | | - if (Types.isArray(typeName)) |
354 | | - { |
355 | | - String arrayType = Types.stripArray(typeName); |
356 | | - int arrayDimension = Types.getArrayDimension(typeName); |
357 | | - if (Types.isPrimitive(arrayType)) |
358 | | - { |
359 | | - type = ast.newArrayType(ast.newPrimitiveType(PrimitiveType.toCode(arrayType)), arrayDimension); |
360 | | - } |
361 | | - else |
362 | | - { |
363 | | - type = ast.newArrayType(ast.newSimpleType(ast.newSimpleName(arrayType)), arrayDimension); |
364 | | - } |
365 | | - } |
366 | | - else |
367 | | - { |
368 | | - type = ast.newSimpleType(ast.newSimpleName(simpleName)); |
369 | | - } |
370 | | - } |
371 | | - else |
372 | | - { |
373 | | - String[] className = Types.tokenizeClassName(typeName); |
374 | | - Name name = ast.newName(className); |
375 | | - type = ast.newSimpleType(name); |
376 | | - } |
377 | | - } |
378 | | - field.setType(type); |
379 | 349 | return this; |
380 | 350 | } |
381 | 351 |
|
@@ -434,7 +404,7 @@ public boolean equals(Object obj) |
434 | 404 | if (other.field != null) |
435 | 405 | return false; |
436 | 406 | } |
437 | | - else if (!field.equals(other.field )) |
| 407 | + else if (!field.equals(other.field)) |
438 | 408 | return false; |
439 | 409 | if (fragment == null) |
440 | 410 | { |
|
0 commit comments