if (sig == null) sig = member.getDescriptor().toString(); String[] sigs = sig.split("[<;>]"); int sigLength = sigs.length;
private void handleMixedUsageError(Annotation annotation) throws Exception { DeclarativeServicesAnnotationError errorDetails; switch (annotation.getElementType()) { case METHOD : errorDetails = new DeclarativeServicesAnnotationError(className.getFQN(), member.getName(), member.getDescriptor() .toString(), ErrorType.MIXED_USE_OF_DS_ANNOTATIONS_STD); break; case FIELD : errorDetails = new DeclarativeServicesAnnotationError(className.getFQN(), member.getName(), ErrorType.MIXED_USE_OF_DS_ANNOTATIONS_STD); break; default : errorDetails = new DeclarativeServicesAnnotationError(className.getFQN(), null, ErrorType.MIXED_USE_OF_DS_ANNOTATIONS_STD); } String fqn = annotation.getName() .getFQN(); List<DeclarativeServicesAnnotationError> errors = mismatchedAnnotations.get(fqn); if (errors == null) { errors = new ArrayList<>(); mismatchedAnnotations.put(fqn, errors); } errors.add(errorDetails); }
private void handleMixedUsageError(Annotation annotation) throws Exception { DeclarativeServicesAnnotationError errorDetails; switch (annotation.getElementType()) { case METHOD : errorDetails = new DeclarativeServicesAnnotationError(className.getFQN(), member.getName(), member.getDescriptor() .toString(), ErrorType.MIXED_USE_OF_DS_ANNOTATIONS_STD); break; case FIELD : errorDetails = new DeclarativeServicesAnnotationError(className.getFQN(), member.getName(), ErrorType.MIXED_USE_OF_DS_ANNOTATIONS_STD); break; default : errorDetails = new DeclarativeServicesAnnotationError(className.getFQN(), null, ErrorType.MIXED_USE_OF_DS_ANNOTATIONS_STD); } String fqn = annotation.getName() .getFQN(); List<DeclarativeServicesAnnotationError> errors = mismatchedAnnotations.get(fqn); if (errors == null) { errors = new ArrayList<>(); mismatchedAnnotations.put(fqn, errors); } errors.add(errorDetails); }
String memberDescriptor = member.getDescriptor() .toString(); switch (annotation.getElementType()) { .error("Invalid activation object, type %s for field %s", member.getDescriptor(), details.fieldName) .details(details);
: member.getDescriptor() .toString(); MethodSignature methodSig = analyzer.getMethodSignature(signature);
: member.getDescriptor() .toString(); MethodSignature methodSig = analyzer.getMethodSignature(signature);
/** * extract properties from an activation object */ private void processConstructorActivationArgs(int toArg) { String memberDescriptor = member.getDescriptor() .toString(); DeclarativeServicesAnnotationError details = new DeclarativeServicesAnnotationError(className.getFQN(), member.getName(), memberDescriptor, ErrorType.CONSTRUCTOR_SIGNATURE_ERROR); MethodResolver resolver = new MethodResolver(classSig, constructorSig); for (int arg = constructorArg; arg < toArg; arg++) { // validate activation object as methodSig. JavaTypeSignature type = resolver.resolveParameter(arg); if (type instanceof ClassTypeSignature) { ClassTypeSignature param = (ClassTypeSignature) type; String propertyDefKey = String.format(ComponentDef.PROPERTYDEF_CONSTRUCTORFORMAT, arg); processActivationObject(propertyDefKey, param, memberDescriptor, details, false); } else { analyzer.error("Invalid activation object type %s for constructor parameter %s", type, arg) .details(details); } } }
/** * */ private void doDeactivate(Annotation annotation) { switch (annotation.getElementType()) { case METHOD : { String memberDescriptor = member.getDescriptor() .toString(); DeclarativeServicesAnnotationError details = new DeclarativeServicesAnnotationError(className.getFQN(), member.getName(), memberDescriptor, ErrorType.DEACTIVATE_SIGNATURE_ERROR); component.deactivate = member.getName(); if (!member.isProtected() || !"deactivate".equals(member.getName())) { component.updateVersion(V1_1); } processMethodActivationArgs(ComponentDef.PROPERTYDEF_DEACTIVATEFORMAT, memberDescriptor, details, true); break; } default : break; } }
/** * */ private void doDeactivate(Annotation annotation) { switch (annotation.getElementType()) { case METHOD : { String memberDescriptor = member.getDescriptor() .toString(); DeclarativeServicesAnnotationError details = new DeclarativeServicesAnnotationError(className.getFQN(), member.getName(), memberDescriptor, ErrorType.DEACTIVATE_SIGNATURE_ERROR); component.deactivate = member.getName(); if (!member.isProtected() || !"deactivate".equals(member.getName())) { component.updateVersion(V1_1); } processMethodActivationArgs(ComponentDef.PROPERTYDEF_DEACTIVATEFORMAT, memberDescriptor, details, true); break; } default : break; } }
/** * extract properties from an activation object */ private void processConstructorActivationArgs(int toArg) { String memberDescriptor = member.getDescriptor() .toString(); DeclarativeServicesAnnotationError details = new DeclarativeServicesAnnotationError(className.getFQN(), member.getName(), memberDescriptor, ErrorType.CONSTRUCTOR_SIGNATURE_ERROR); MethodResolver resolver = new MethodResolver(classSig, constructorSig); for (int arg = constructorArg; arg < toArg; arg++) { // validate activation object as methodSig. JavaTypeSignature type = resolver.resolveParameter(arg); if (type instanceof ClassTypeSignature) { ClassTypeSignature param = (ClassTypeSignature) type; String propertyDefKey = String.format(ComponentDef.PROPERTYDEF_CONSTRUCTORFORMAT, arg); processActivationObject(propertyDefKey, param, memberDescriptor, details, false); } else { analyzer.error("Invalid activation object type %s for constructor parameter %s", type, arg) .details(details); } } }
/** * */ private void doModified(Annotation annotation) { switch (annotation.getElementType()) { case METHOD : { String memberDescriptor = member.getDescriptor() .toString(); DeclarativeServicesAnnotationError details = new DeclarativeServicesAnnotationError(className.getFQN(), member.getName(), memberDescriptor, ErrorType.MODIFIED_SIGNATURE_ERROR); component.modified = member.getName(); component.updateVersion(V1_1); processMethodActivationArgs(ComponentDef.PROPERTYDEF_MODIFIEDFORMAT, memberDescriptor, details, false); break; } default : break; } }
/** * */ private void doModified(Annotation annotation) { switch (annotation.getElementType()) { case METHOD : { String memberDescriptor = member.getDescriptor() .toString(); DeclarativeServicesAnnotationError details = new DeclarativeServicesAnnotationError(className.getFQN(), member.getName(), memberDescriptor, ErrorType.MODIFIED_SIGNATURE_ERROR); component.modified = member.getName(); component.updateVersion(V1_1); processMethodActivationArgs(ComponentDef.PROPERTYDEF_MODIFIEDFORMAT, memberDescriptor, details, false); break; } default : break; } }
private FieldSignature getFieldSignature(FieldDef field) { String signature = field.getSignature(); if (signature != null) { return analyzer.getFieldSignature(signature); } signature = field.getDescriptor() .toString(); switch (signature.charAt(0)) { case 'L' : // ClassTypeSignature case 'T' : // TypeVariableSignature case '[' : // ArrayTypeSignature return analyzer.getFieldSignature(signature); default : // BaseType return null; } }
private FieldSignature getFieldSignature(FieldDef field) { String signature = field.getSignature(); if (signature != null) { return analyzer.getFieldSignature(signature); } signature = field.getDescriptor() .toString(); switch (signature.charAt(0)) { case 'L' : // ClassTypeSignature case 'T' : // TypeVariableSignature case '[' : // ArrayTypeSignature return analyzer.getFieldSignature(signature); default : // BaseType return null; } }
@Override public void field(Clazz.FieldDef defined) { String descriptor = defined.getName() + ":" + defined.getDescriptor(); Kind kind = Kind.FIELD; Scope m = s.getScope(descriptor); m.access = Access.modifier(defined.getAccess()); m.kind = kind; m.declaring = s; s.add(m); }
/** * Parses a field. Always invoked BEFORE eventual field annotation */ @Override public void field(Clazz.FieldDef field) { m_logger.debug("Parsed field %s descriptor=%s", field.getName(), field.getDescriptor()); m_isField = true; m_field = field.getName(); m_fieldDef = field; m_descriptor = field.getDescriptor().toString(); }
@Override public void field(Clazz.FieldDef defined) { String descriptor = defined.getName() + ":" + defined.getDescriptor(); Kind kind = Kind.FIELD; Scope m = s.getScope(descriptor); m.access = Access.modifier(defined.getAccess()); m.kind = kind; m.declaring = s; s.add(m); }
@Override public void field(Clazz.FieldDef defined) { String descriptor = defined.getName() + ":" + defined.getDescriptor(); Kind kind = Kind.FIELD; Scope m = s.getScope(descriptor); m.access = Access.modifier(defined.getAccess()); m.kind = kind; m.declaring = s; s.add(m); }
@Override public void field(Clazz.FieldDef defined) { String descriptor = defined.getName() + ":" + defined.getDescriptor(); Kind kind = Kind.FIELD; Scope m = s.getScope(descriptor); m.access = Access.modifier(defined.getAccess()); m.kind = kind; m.declaring = s; s.add(m); }
@Override public void field(Clazz.FieldDef defined) { String descriptor = defined.getName() + ":" + defined.getDescriptor(); Kind kind = Kind.FIELD; Scope m = s.getScope(descriptor); m.access = Access.modifier(defined.getAccess()); m.kind = kind; m.declaring = s; s.add(m); }