public int toModifiers(int modifiers) { switch (this) { case Public: return Modifier.setPublic(modifiers); case Protected: return Modifier.setProtected(modifiers); case Package: return Modifier.setPackage(modifiers); case Private: return Modifier.setPrivate(modifiers); default: throw new IllegalArgumentException("Unknown Visibility?!?!"); } } }
originalModifiers = Modifier.setPrivate(originalModifiers); originalMethod.setModifiers(originalModifiers); wrapperModifiers = wrapperModifiers & (~Modifier.SYNCHRONIZED);
private void restoreOriginalConstructorsAccesses(CtClass clazz) throws Exception { Class<?> originalClass = getTestClass().getName().equals(clazz.getName()) ? getTestClass() : Class.forName(clazz.getName(), true, getTestClass().getClassLoader()); for (final CtConstructor ctConstr : clazz.getConstructors()) { int ctModifiers = ctConstr.getModifiers(); if (!Modifier.isPublic(ctModifiers)) { /* Probably a defer-constructor */ continue; } int desiredAccessModifiers = originalClass.getDeclaredConstructor( asOriginalClassParams(ctConstr.getParameterTypes())).getModifiers(); if (Modifier.isPrivate(desiredAccessModifiers)) { ctConstr.setModifiers(Modifier.setPrivate(ctModifiers)); } else if (Modifier.isProtected(desiredAccessModifiers)) { ctConstr.setModifiers(Modifier.setProtected(ctModifiers)); } else if (!Modifier.isPublic(desiredAccessModifiers)) { ctConstr.setModifiers(Modifier.setPackage(ctModifiers)); } else { /* ctConstr remains public */ } } }
public int mergedModifiers() { int modifiers = getModifiers(versions.lastEntry().getValue()); int andFlags = -1; int orFlags = 0; for (T v : versions.values()) { int x = getModifiers(v); andFlags &= x; orFlags |= x; } //Least-acessible mode between all versions if (Modifier.isPrivate(orFlags)) { modifiers = Modifier.setPrivate(modifiers); } else if (Modifier.isPackage(orFlags)) { modifiers = Modifier.setPackage(modifiers); } else if (Modifier.isProtected(orFlags)) { modifiers = Modifier.setProtected(modifiers); } else { modifiers = Modifier.setPublic(modifiers); } // If we mix-up static and non-static versions of the same method (PackageParser.collectCertificates), // we mark it as non-topublic, non-static to force the use of reflection if ( (andFlags & Modifier.STATIC) != (orFlags & Modifier.STATIC) ) { modifiers &= ~Modifier.STATIC; if (Modifier.isPublic(modifiers)) { modifiers = Modifier.setProtected(modifiers); } } return modifiers; }