CPD Results

The following document contains the results of PMD's CPD 4.2.2.

Duplications

File Line
net\sf\oval\guard\Guard.java 652
net\sf\oval\guard\Guard.java 843
		final ClassChecks cc = getClassChecks(method.getDeclaringClass());

		final boolean checkInvariants = isInvariantsEnabled && cc.isCheckInvariants
				&& !ReflectionUtils.isPrivate(method) && !ReflectionUtils.isProtected(method);

		final List<ConstraintViolation> violations = getCollectionFactory().createList();

		// if static method use the declaring class as guardedObject
		if (guardedObject == null && ReflectionUtils.isStatic(method))
		{
			guardedObject = method.getDeclaringClass();
		}

		try
		{
			// check invariants
			if (checkInvariants || cc.methodsWithCheckInvariantsPre.contains(method))
			{
				validateInvariants(guardedObject, violations, null);
			}

			if (isPreConditionsEnabled)
			{
				// method parameter validation
				if (violations.size() == 0 && args.length > 0)
				{
					validateMethodParameters(guardedObject, method, args, violations);
				}

				// @Pre validation
				if (violations.size() == 0)
				{
					validateMethodPre(guardedObject, method, args, violations);
				}
			}
		}
		catch (final ValidationFailedException ex)
		{
			throw translateException(ex);
		}

		final ProbeModeListener pml = isProbeModeFeatureUsed ? objectsInProbeMode.get().get(guardedObject) : null;
		if (pml != null)
		{
			pml.onMethodCall(method, args);
		}

		if (violations.size() > 0)
		{
			final ConstraintsViolatedException violationException = new ConstraintsViolatedException(violations);
			if (isListenersFeatureUsed)
			{
				notifyListeners(guardedObject, violationException);
			}

			// don't throw an exception if the method is a setter and suppressing for precondition is enabled
			if (pml != null)
			{
				pml.onConstraintsViolatedException(violationException);
				return DO_NOT_PROCEED;

File Line
net\sf\oval\constraint\MemberOfCheck.java 43
net\sf\oval\constraint\NotMemberOfCheck.java 43
	public void configure(final NotMemberOf constraintAnnotation)
	{
		super.configure(constraintAnnotation);
		setIgnoreCase(constraintAnnotation.ignoreCase());
		setMembers(constraintAnnotation.value());
	}

	/**
	 * {@inheritDoc}
	 */
	@Override
	public Map<String, String> createMessageVariables()
	{
		final Map<String, String> messageVariables = getCollectionFactory().createMap(2);
		messageVariables.put("ignoreCase", Boolean.toString(ignoreCase));
		messageVariables.put("members", StringUtils.implode(members, ","));
		return messageVariables;
	}

	/**
	 * {@inheritDoc}
	 */
	protected ConstraintTarget[] getAppliesToDefault()
	{
		return new ConstraintTarget[]{ConstraintTarget.VALUES};
	}
	
	/**
	 * @return the members
	 */
	public List<String> getMembers()
	{
		final List<String> v = getCollectionFactory().createList();
		v.addAll(members);
		return v;
	}

	private List<String> getMembersLowerCase()
	{
		if (membersLowerCase == null)
		{
			membersLowerCase = getCollectionFactory().createList(members.size());
			for (final String val : members)
			{
				membersLowerCase.add(val.toLowerCase(Locale.getDefault()));
			}
		}
		return membersLowerCase;
	}

	/**
	 * @return the ignoreCase
	 */
	public boolean isIgnoreCase()
	{
		return ignoreCase;
	}

	/**
	 * {@inheritDoc}
	 */
	public boolean isSatisfied(final Object validatedObject, final Object valueToValidate, final OValContext context,
			final Validator validator)
	{
		if (valueToValidate == null) return true;

		if (ignoreCase)
			return !getMembersLowerCase().contains(valueToValidate.toString().toLowerCase(Locale.getDefault()));

File Line
net\sf\oval\constraint\MatchPatternCheck.java 120
net\sf\oval\constraint\NotMatchPatternCheck.java 91
	}

	/**
	 * @param pattern the pattern to set
	 */
	public void setPattern(final Pattern pattern)
	{
		synchronized (patterns)
		{
			patterns.clear();
			patterns.add(pattern);
		}
		requireMessageVariablesRecreation();
	}

	/**
	 * @param pattern the pattern to set
	 */
	public void setPattern(final String pattern, final int flags)
	{
		synchronized (patterns)
		{
			patterns.clear();
			patterns.add(Pattern.compile(pattern, flags));
		}
		requireMessageVariablesRecreation();
	}

	/**
	 * @param patterns the patterns to set
	 */
	public void setPatterns(final Collection<Pattern> patterns)
	{
		synchronized (this.patterns)
		{
			this.patterns.clear();
			this.patterns.addAll(patterns);
		}
		requireMessageVariablesRecreation();
	}

	/**
	 * @param patterns the patterns to set
	 */
	public void setPatterns(final Pattern... patterns)
	{
		synchronized (this.patterns)
		{
			this.patterns.clear();
			ArrayUtils.addAll(this.patterns, patterns);
		}
		requireMessageVariablesRecreation();
	}

	/**
	 * {@inheritDoc}
	 */
	@Override
	public Map<String, String> createMessageVariables()
	{
		final Map<String, String> messageVariables = getCollectionFactory().createMap(2);
		messageVariables.put("pattern", patterns.size() == 1 ? patterns.get(0).toString() : patterns.toString());
		return messageVariables;
	}
}

File Line
net\sf\oval\constraint\EqualToFieldCheck.java 116
net\sf\oval\constraint\NotEqualToFieldCheck.java 112
		return !valueToValidate.equals(valueToCompare);
	}

	/**
	 * @return the useGetter
	 */
	public boolean isUseGetter()
	{
		return useGetter;
	}

	/**
	 * @param declaringClass the declaringClass to set
	 */
	public void setDeclaringClass(final Class< ? > declaringClass)
	{
		this.declaringClass = declaringClass == Void.class ? null : declaringClass;
		requireMessageVariablesRecreation();
	}

	/**
	 * @param fieldName the fieldName to set
	 */
	public void setFieldName(final String fieldName)
	{
		this.fieldName = fieldName;
		requireMessageVariablesRecreation();
	}

	/**
	 * @param useGetter the useGetter to set
	 */
	public void setUseGetter(final boolean useGetter)
	{
		this.useGetter = useGetter;
		requireMessageVariablesRecreation();
	}

	/**
	 * {@inheritDoc}
	 */
	@Override
	public Map<String, String> createMessageVariables()
	{
		final Map<String, String> messageVariables = getCollectionFactory().createMap(2);
		messageVariables.put("fieldName", fieldName);
		messageVariables.put("declaringClass", declaringClass == null || declaringClass == Void.class ? null
				: declaringClass.getName());
		messageVariables.put("useGetter", Boolean.toString(useGetter));
		return messageVariables;
	}
}

File Line
net\sf\oval\guard\Guard.java 1463
net\sf\oval\guard\Guard.java 1535
				values.put("_this", validatedObject);
				if (hasParameters)
				{
					values.put("_args", args);
					for (int i = 0; i < args.length; i++)
					{
						values.put(parameterNames[i], args[i]);
					}
				}
				else
				{
					values.put("_args", ArrayUtils.EMPTY_OBJECT_ARRAY);
				}

				if (!eng.evaluateAsBoolean(check.getExpression(), values))
				{
					final Map<String, String> messageVariables = getCollectionFactory().createMap(2);
					messageVariables.put("expression", check.getExpression());
					final String errorMessage = renderMessage(context, null, check.getMessage(), messageVariables);

					violations.add(new ConstraintViolation(check, errorMessage, validatedObject, null, context));
				}
			}
		}
		catch (final OValException ex)
		{
			throw new ValidationFailedException("Method pre conditions validation failed. Method: " + method

File Line
net\sf\oval\constraint\InstanceOfAnyCheck.java 64
net\sf\oval\constraint\InstanceOfCheck.java 58
	}

	/**
	 * @param types the types to set
	 */
	public void setTypes(final Class< ? >... types)
	{
		this.types = types;
		requireMessageVariablesRecreation();
	}

	@Override
	public Map<String, String> createMessageVariables()
	{
		final Map<String, String> messageVariables = getCollectionFactory().createMap(2);
		if (types.length == 1)
		{
			messageVariables.put("types", types[0].getName());
		}
		else
		{
			final String[] classNames = new String[types.length];
			for (int i = 0, l = classNames.length; i < l; i++)
			{
				classNames[i] = types[i].getName();
			}
			messageVariables.put("types", StringUtils.implode(classNames, ","));
		}
		return messageVariables;
	}
}

File Line
net\sf\oval\constraint\MatchPatternCheck.java 46
net\sf\oval\constraint\NotMatchPatternCheck.java 43
		super.configure(constraintAnnotation);

		synchronized (patterns)
		{
			patterns.clear();
			final String[] stringPatterns = constraintAnnotation.pattern();
			final int[] f = constraintAnnotation.flags();
			for (int i = 0, l = stringPatterns.length; i < l; i++)
			{
				final int flag = f.length > i ? f[i] : 0;
				final Pattern p = Pattern.compile(stringPatterns[i], flag);
				patterns.add(p);
			}
		}
	}
	
	/**
	 * {@inheritDoc}
	 */
	protected ConstraintTarget[] getAppliesToDefault()
	{
		return new ConstraintTarget[]{ConstraintTarget.VALUES};
	}

	/**
	 * @return the pattern
	 */
	public Pattern[] getPatterns()
	{
		synchronized (patterns)
		{
			return patterns.toArray(new Pattern[patterns.size()]);
		}
	}

	/**
	 * {@inheritDoc}
	 */
	public boolean isSatisfied(final Object validatedObject, final Object valueToValidate, final OValContext context,

File Line
net\sf\oval\constraint\EqualToFieldCheck.java 47
net\sf\oval\constraint\NotEqualToFieldCheck.java 47
	public void configure(final NotEqualToField constraintAnnotation)
	{
		super.configure(constraintAnnotation);
		setFieldName(constraintAnnotation.value());
		setDeclaringClass(constraintAnnotation.declaringClass());
		setUseGetter(constraintAnnotation.useGetter());
	}

	/**
	 * @return the declaringClass
	 */
	public Class< ? > getDeclaringClass()
	{
		return declaringClass;
	}

	/**
	 * @return the fieldName
	 */
	public String getFieldName()
	{
		return fieldName;
	}

	/**
	 * {@inheritDoc}
	 */
	public boolean isSatisfied(final Object validatedObject, final Object valueToValidate, final OValContext context,
			final Validator validator)
	{
		if (valueToValidate == null) return true;

		final Class< ? > clazz = validatedObject.getClass();

		final Object valueToCompare;
		if (useGetter)
		{
			final Method getter = ReflectionUtils.getGetterRecursive(clazz, fieldName);
			if (getter == null)

File Line
net\sf\oval\constraint\MemberOfCheck.java 112
net\sf\oval\constraint\NotMemberOfCheck.java 112
		return !members.contains(valueToValidate.toString());
	}

	/**
	 * @param ignoreCase the ignoreCase to set
	 */
	public void setIgnoreCase(final boolean ignoreCase)
	{
		this.ignoreCase = ignoreCase;
		requireMessageVariablesRecreation();
	}

	/**
	 * @param members the members to set
	 */
	public void setMembers(final List<String> members)
	{
		this.members = getCollectionFactory().createList();
		this.members.addAll(members);
		membersLowerCase = null;
		requireMessageVariablesRecreation();
	}

	/**
	 * @param members the members to set
	 */
	public void setMembers(final String... members)
	{
		this.members = getCollectionFactory().createList();
		ArrayUtils.addAll(this.members, members);
		membersLowerCase = null;
		requireMessageVariablesRecreation();
	}
}