@Override
  public ConfigProgram introspectField(AnnotatedField<?> field) {
    Resource resource = field.getAnnotation(Resource.class);

    Field javaField = field.getJavaMember();

    String loc = getLocation(javaField);

    String jndiName = javaField.getDeclaringClass().getName() + "/" + javaField.getName();
    Class<?> bindType = javaField.getType();

    ValueGenerator gen = generateContext(loc, bindType, jndiName, resource);

    bindJndi(javaField, gen);

    return new FieldGeneratorProgram(field.getJavaMember(), gen);
  }
Ejemplo n.º 2
0
  @Override
  public ConfigProgram introspectField(AnnotatedField<?> field) {
    PersistenceContext pContext = field.getAnnotation(PersistenceContext.class);

    PersistenceContextType type = pContext.type();

    Field javaField = field.getJavaMember();
    String location = getLocation(javaField);

    if (!javaField.getType().isAssignableFrom(EntityManager.class)) {
      throw new ConfigException(
          L.l(
              "{0}: @PersistenceContext field must be assignable from EntityManager.",
              getLocation(javaField)));
    }

    ValueGenerator gen;

    if (PersistenceContextType.EXTENDED.equals(type))
      gen = generateExtendedContext(location, pContext);
    else gen = generateTransactionContext(location, pContext);

    return new FieldGeneratorProgram(javaField, gen);
  }