private FieldConduit<Object> createConduit(PlasticField field, final String blockId) { final String className = field.getPlasticClass().getClassName(); final String fieldName = field.getName(); return new ReadOnlyComponentFieldConduit(className, fieldName) { public Object get(Object instance, InstanceContext context) { ComponentResources resources = context.get(ComponentResources.class); return resources.getBlock(blockId); } }; }
public void transform(final PlasticClass plasticClass) tracker.run(String.format("Running component class transformations on %s", plasticClass.getClassName()), new Runnable()
public void run() { try { boolean success = injectionProvider.provideInjection(field, locator, model); if (success) { field.claim("@Inject"); } } catch (RuntimeException ex) { throw new RuntimeException(String.format("Error obtaining injected value for field %s.%s: %s", plasticClass.getClassName(), fieldName, ExceptionUtils.toMessage(ex)), ex); } } });
private PropertyAccessType toType(PlasticField field) { Property annotation = field.getAnnotation(Property.class); boolean read = annotation.read(); boolean write = annotation.write(); if (read && write) return PropertyAccessType.READ_WRITE; if (read) return PropertyAccessType.READ_ONLY; if (write) return PropertyAccessType.WRITE_ONLY; throw new IllegalArgumentException(String.format( "@Property annotation on %s.%s should have either read() or write() enabled.", field.getPlasticClass() .getClassName(), field.getName())); } }
@Override public InstructionBuilder invokeVirtual(PlasticMethod method) { check(); assert method != null; MethodDescription description = method.getDescription(); return invokeVirtual(method.getPlasticClass().getClassName(), description.returnType, description.methodName, description.argumentTypes); }
@Override public InstructionBuilder invokeVirtual(PlasticMethod method) { check(); assert method != null; MethodDescription description = method.getDescription(); return invokeVirtual(method.getPlasticClass().getClassName(), description.returnType, description.methodName, description.argumentTypes); }
@Override public InstructionBuilder getField(PlasticField field) { check(); return getField(field.getPlasticClass().getClassName(), field.getName(), field.getTypeName()); }
@Override public InstructionBuilder getField(PlasticField field) { check(); return getField(field.getPlasticClass().getClassName(), field.getName(), field.getTypeName()); }
public void transform(final PlasticClass plasticClass, TransformationSupport support, final MutableComponentModel model) { for (final PlasticField field : F.flow(plasticClass.getUnclaimedFields()).filter(MATCHER)) { final String fieldName = field.getName(); tracker.run(String.format("Injecting field %s.%s", plasticClass.getClassName(), fieldName), new Runnable() { public void run() { try { boolean success = injectionProvider.provideInjection(field, locator, model); if (success) { field.claim("@Inject"); } } catch (RuntimeException ex) { throw new RuntimeException(String.format("Error obtaining injected value for field %s.%s: %s", plasticClass.getClassName(), fieldName, ExceptionUtils.toMessage(ex)), ex); } } }); } } }
@Override public void transform(PlasticClass plasticClass, TransformationSupport support, MutableComponentModel model) { for (final PlasticField field : plasticClass .getFieldsWithAnnotation(PersistenceContext.class)) { final PersistenceContext annotation = field.getAnnotation(PersistenceContext.class); field.claim(annotation); field.setConduit(new ReadOnlyComponentFieldConduit(plasticClass.getClassName(), field.getName()) { @Override public Object get(Object instance, InstanceContext context) { return JpaInternalUtils.getEntityManager(entityManagerManager, annotation); } }); } } }
@Override public void transform(PlasticClass plasticClass, TransformationSupport support, MutableComponentModel model) { for (final PlasticField field : plasticClass .getFieldsWithAnnotation(PersistenceContext.class)) { final PersistenceContext annotation = field.getAnnotation(PersistenceContext.class); field.claim(annotation); field.setConduit(new ReadOnlyComponentFieldConduit(plasticClass.getClassName(), field.getName()) { @Override public Object get(Object instance, InstanceContext context) { return JpaInternalUtils.getEntityManager(entityManagerManager, annotation); } }); } } }
public void run() String className = plasticClass.getClassName(); String parentClassName = plasticClass.getSuperClassName();
private void mapFieldToQueryParameter(PlasticField field, TransformationSupport support) { ActivationRequestParameter annotation = field.getAnnotation(ActivationRequestParameter.class); String parameterName = getParameterName(field, annotation); // Assumption: the field type is not one that's loaded by the component class loader, so it's safe // to convert to a hard type during class transformation. Class fieldType = classCache.forName(field.getTypeName()); ValueEncoder encoder = valueEncoderSource.getValueEncoder(fieldType); FieldHandle handle = field.getHandle(); String fieldName = String.format("%s.%s", field.getPlasticClass().getClassName(), field.getName()); setValueFromInitializeEventHandler(support, fieldName, annotation.required(), handle, parameterName, encoder, urlEncoder); decorateLinks(support, fieldName, handle, parameterName, encoder, urlEncoder); preallocateName(support, parameterName); }
private void addInjectedPage(PlasticField field) { InjectPage annotation = field.getAnnotation(InjectPage.class); field.claim(annotation); String pageName = annotation.value(); String fieldName = field.getName(); String injectedPageName = InternalUtils.isBlank(pageName) ? resolver .resolvePageClassNameToPageName(field.getTypeName()) : pageName; field.setConduit(new InjectedPageConduit(field.getPlasticClass().getClassName(), fieldName, injectedPageName)); } }
private void transformField(PlasticClass transformation, MutableComponentModel model, PlasticField field) { Component annotation = field.getAnnotation(Component.class); field.claim(annotation); String annotationId = annotation.id(); String fieldName = field.getName(); String id = InternalUtils.isNonBlank(annotationId) ? annotationId : InternalUtils.stripMemberName(fieldName); String type = field.getTypeName(); Location location = new StringLocation(String.format("%s.%s", transformation.getClassName(), fieldName), 0); MutableEmbeddedComponentModel embedded = model.addEmbeddedComponent(id, annotation.type(), type, annotation .inheritInformalParameters(), location); addParameters(embedded, annotation.parameters()); updateModelWithPublishedParameters(embedded, annotation); convertAccessToField(field, id); addMixinClasses(field, embedded); addMixinTypes(field, embedded); }
final String className = transformation.getClassName();