CPD Results
The following document contains the results of PMD's CPD 5.1.2.
Duplications
File |
Line |
info/magnolia/cms/beans/config/PropertiesInitializer.java |
393 |
info/magnolia/init/AbstractMagnoliaConfigurationProperties.java |
120 |
StringBuffer buf = new StringBuffer(strVal);
int startIndex = strVal.indexOf(PLACEHOLDER_PREFIX);
while (startIndex != -1) {
int endIndex = -1;
int index = startIndex + PLACEHOLDER_PREFIX.length();
int withinNestedPlaceholder = 0;
while (index < buf.length()) {
if (PLACEHOLDER_SUFFIX.equals(buf.subSequence(index, index + PLACEHOLDER_SUFFIX.length()))) {
if (withinNestedPlaceholder > 0) {
withinNestedPlaceholder--;
index = index + PLACEHOLDER_SUFFIX.length();
}
else {
endIndex = index;
break;
}
}
else if (PLACEHOLDER_PREFIX.equals(buf.subSequence(index, index + PLACEHOLDER_PREFIX.length()))) {
withinNestedPlaceholder++;
index = index + PLACEHOLDER_PREFIX.length();
}
else {
index++;
}
}
if (endIndex != -1) {
String placeholder = buf.substring(startIndex + PLACEHOLDER_PREFIX.length(), endIndex);
if (!visitedPlaceholders.add(placeholder)) {
log.warn("Circular reference detected in properties, \"{}\" is not resolvable", strVal);
return strVal;
}
// Recursive invocation, parsing placeholders contained in the placeholder key.
placeholder = parseStringValue(placeholder, visitedPlaceholders); |
File |
Line |
info/magnolia/content2bean/impl/TypeMappingImpl.java |
81 |
info/magnolia/jcr/node2bean/impl/TypeMappingImpl.java |
228 |
public Method getAddMethod(Class<?> type, String name, int numberOfParameters) {
name = StringUtils.capitalize(name);
Method method = getExactMethod(type, "add" + name, numberOfParameters);
if (method == null) {
method = getExactMethod(type, "add" + StringUtils.removeEnd(name, "s"), numberOfParameters);
}
if (method == null) {
method = getExactMethod(type, "add" + StringUtils.removeEnd(name, "es"), numberOfParameters);
}
if (method == null) {
method = getExactMethod(type, "add" + StringUtils.removeEnd(name, "ren"), numberOfParameters);
}
if (method == null) {
method = getExactMethod(type, "add" + StringUtils.removeEnd(name, "ies") + "y", numberOfParameters);
}
return method;
} |
File |
Line |
info/magnolia/importexport/PropertiesImportExport.java |
151 |
info/magnolia/jcr/util/PropertiesImportExport.java |
171 |
protected Object convertNodeDataStringToObject(String valueStr) {
if (contains(valueStr, ':')) {
final String type = StringUtils.substringBefore(valueStr, ":");
final String value = StringUtils.substringAfter(valueStr, ":");
// there is no beanUtils converter for Calendar
if (type.equalsIgnoreCase("date")) {
return ISO8601.parse(value);
} else if (type.equalsIgnoreCase("binary")) {
return new ByteArrayInputStream(value.getBytes());
} else {
try {
final Class<?> typeCl;
if (type.equals("int")) {
typeCl = Integer.class;
} else {
typeCl = Class.forName("java.lang." + StringUtils.capitalize(type));
}
return ConvertUtils.convert(value, typeCl);
} catch (ClassNotFoundException e) {
// possibly a stray :, let's ignore it for now
return valueStr;
}
}
}
// no type specified, we assume it's a string, no conversion
return valueStr;
} |
File |
Line |
info/magnolia/cms/core/DefaultACLBasedPermissions.java |
112 |
info/magnolia/cms/core/NodeTypeBasedPermissions.java |
106 |
}
@Override
public boolean canRead(Path itemPath, ItemId itemId) throws RepositoryException {
if ((itemId != null && "cafebabe-cafe-babe-cafe-babecafebabe".equals(itemId.toString())) || (itemPath != null && "/".equals(itemPath.toString()))) {
// quick check - allow access to root to all like in old mgnl security
return true;
}
if (itemPath == null) {
// we deal only with permissions on nodes
if (!itemId.denotesNode()) {
itemId = ((PropertyId)itemId).getParentId();
}
synchronized (monitor) {
if (readCache.containsKey(itemId)) {
return readCache.get(itemId);
}
itemPath = session.getHierarchyManager().getPath(itemId);
boolean canRead = canRead(itemPath, itemId);
readCache.put(itemId, canRead);
return canRead;
}
}
String path = pathResolver.getJCRPath(itemPath); |
File |
Line |
info/magnolia/voting/voters/ResponseContentTypeVoter.java |
50 |
info/magnolia/voting/voters/UserAgentVoter.java |
50 |
private static final org.slf4j.Logger log = org.slf4j.LoggerFactory.getLogger(ResponseContentTypeVoter.class);
private final List<String> allowed = new ArrayList<String>();
private final List<String> rejected = new ArrayList<String>();
public List<String> getAllowed() {
return allowed;
}
public void setAllowed(List<String> allowed) {
this.allowed.addAll(allowed);
}
public void addAllowed(String contentType) {
allowed.add(contentType);
}
public List<String> getRejected() {
return rejected;
}
public void setRejected(List<String> rejected) {
this.rejected.addAll(rejected);
}
public void addRejected(String contentType) {
rejected.add(contentType);
}
@Override
protected boolean boolVote(Object value) {
final HttpServletResponse response; |
File |
Line |
info/magnolia/content2bean/impl/Content2BeanProcessorImpl.java |
220 |
info/magnolia/jcr/node2bean/impl/Node2BeanProcessorImpl.java |
252 |
protected void setProperties(Map<String, Object> values, final Content2BeanTransformer transformer, TransformationState state) throws Content2BeanException {
Object bean = state.getCurrentBean();
log.debug("will populate bean {} with the values {}", bean.getClass().getName(), values);
if(bean instanceof Map){
((Map<String, Object>)bean).putAll(values);
}
if(bean instanceof Collection){
((Collection<Object>)bean).addAll(values.values());
}
else{
// TypeDescriptor beanTypeDescriptor = transformer.getTypeMapping().getTypeDescriptor(bean.getClass());
TypeDescriptor beanTypeDescriptor = typeMapping.getTypeDescriptor(bean.getClass());
final Collection<PropertyTypeDescriptor> dscrs = beanTypeDescriptor.getPropertyDescriptors(typeMapping).values();
for (PropertyTypeDescriptor descriptor : dscrs) {
transformer.setProperty(typeMapping, state, descriptor, values);
}
}
}
protected Content2BeanTransformer resolveTransformer(TypeDescriptor type, Content2BeanTransformer transformer) { |
File |
Line |
info/magnolia/content2bean/impl/Content2BeanTransformerImpl.java |
347 |
info/magnolia/jcr/node2bean/impl/Node2BeanTransformerImpl.java |
286 |
throw new Content2BeanException(e);
}
}
if (Locale.class.equals(propertyType)) {
if (value instanceof String) {
String localeStr = (String) value;
if (StringUtils.isNotEmpty(localeStr)) {
return LocaleUtils.toLocale(localeStr);
}
}
}
if (Collection.class.equals(propertyType) && value instanceof Map) {
// TODO never used ?
return ((Map) value).values();
}
// this is mainly the case when we are flattening node hierarchies
if (String.class.equals(propertyType) && value instanceof Map && ((Map) value).size() == 1) {
return ((Map) value).values().iterator().next();
}
return value;
} |
File |
Line |
info/magnolia/importexport/PropertiesImportExport.java |
69 |
info/magnolia/jcr/util/PropertiesImportExport.java |
78 |
public void createContent(Content root, InputStream propertiesStream) throws IOException, RepositoryException {
Properties properties = new OrderedProperties();
properties.load(propertiesStream);
properties = keysToInnerFormat(properties);
for (Object o : properties.keySet()) {
String key = (String) o;
String valueStr = properties.getProperty(key);
String propertyName = StringUtils.substringAfterLast(key, ".");
String path = StringUtils.substringBeforeLast(key, ".");
String type = null;
if (propertyName.equals("@type")) {
type = valueStr;
} else if (properties.containsKey(path + ".@type")) {
type = properties.getProperty(path + ".@type");
}
type = StringUtils.defaultIfEmpty(type, ItemType.CONTENTNODE.getSystemName()); |
File |
Line |
info/magnolia/content2bean/TypeDescriptor.java |
109 |
info/magnolia/jcr/node2bean/TypeDescriptor.java |
115 |
return (isMap() || isCollection()) && (getType().isInterface() || getType().isArray());
}
/**
* This method is not synchronized to avoid thread blocking, but the method guarantees that the returned map is not mutated afterward.
*/
public Map<String, PropertyTypeDescriptor> getPropertyDescriptors(TypeMapping typeMapping) {
//TODO ---- moved this out to TypeDescriptorFactory or something ?
if(this.descriptors == null){
// for not making this method synchronized we create a local variable first
// this guarantees that the map you get is not changed after return
final Map<String, PropertyTypeDescriptor> tmpDescriptors = new HashMap<String, PropertyTypeDescriptor>();
PropertyDescriptor[] dscrs = PropertyUtils.getPropertyDescriptors(this.getType());
for (int i = 0; i < dscrs.length; i++) {
PropertyDescriptor descriptor = dscrs[i];
tmpDescriptors.put(descriptor.getName(), typeMapping.getPropertyTypeDescriptor(this.getType(), descriptor.getName()));
}
this.descriptors = Collections.unmodifiableMap(tmpDescriptors);
}
return this.descriptors;
}
/**
* Can return a custom transformer. Otherwise null.
*/
public Content2BeanTransformer getTransformer() { |
File |
Line |
info/magnolia/content2bean/impl/Content2BeanTransformerImpl.java |
144 |
info/magnolia/jcr/node2bean/impl/Node2BeanTransformerImpl.java |
166 |
String mapProperyName = state.peekContent(1).getName();
propDscr = state.peekType(1).getPropertyTypeDescriptor(mapProperyName, typeMapping);
if (propDscr != null) {
typeDscr = propDscr.getCollectionEntryType();
}
}
} else {
propDscr = state.getCurrentType().getPropertyTypeDescriptor(node.getName(), typeMapping);
if (propDscr != null) {
typeDscr = propDscr.getType();
}
}
}
typeDscr = onResolveType(typeMapping, state, typeDscr, componentProvider);
if (typeDscr != null) {
// might be that the factory util defines a default implementation for interfaces
final Class<?> type = typeDscr.getType();
typeDscr = typeMapping.getTypeDescriptor(componentProvider.getImplementation(type)); |
File |
Line |
info/magnolia/content2bean/impl/Content2BeanTransformerImpl.java |
239 |
info/magnolia/jcr/node2bean/impl/Node2BeanTransformerImpl.java |
334 |
value = state.getCurrentContent().getName();
} else if (propertyName.equals("className") && value == null) {
value = values.get("class");
}
// do no try to set a bean-property that has no corresponding node-property
// else if (!values.containsKey(propertyName)) {
if (value == null) {
return;
}
log.debug("try to set {}.{} with value {}", new Object[] { bean, propertyName, value });
// if the parent bean is a map, we can't guess the types.
if (!(bean instanceof Map)) {
try {
PropertyTypeDescriptor dscr = mapping.getPropertyTypeDescriptor(bean.getClass(), propertyName);
if (dscr.getType() != null) {
// try to use an adder method for a Collection property of the bean
if (dscr.isCollection() || dscr.isMap()) { |
File |
Line |
info/magnolia/cms/util/NodeDataUtil.java |
107 |
info/magnolia/jcr/util/PropertyUtil.java |
282 |
public static String getValueString(Value value, String dateFormat) {
try{
switch (value.getType()) {
case (PropertyType.STRING):
return value.getString();
case (PropertyType.DOUBLE):
return Double.toString(value.getDouble());
case (PropertyType.LONG):
return Long.toString(value.getLong());
case (PropertyType.BOOLEAN):
return Boolean.toString(value.getBoolean());
case (PropertyType.DATE):
Date valueDate = value.getDate().getTime();
return DateUtil.format(valueDate, dateFormat); |
File |
Line |
info/magnolia/jcr/node2bean/impl/Node2BeanTransformerImpl.java |
408 |
info/magnolia/jcr/node2bean/impl/Node2BeanTransformerImpl.java |
429 |
} catch (Exception e) {
if (log.isDebugEnabled()) {
log.debug("Can't set property [{}] to value [{}] in bean [{}] for node {} due to {}",
new Object[] { propertyName, value, bean.getClass().getName(),
state.getCurrentNode().getPath(), e.toString() });
} else {
log.error("Can't set property [{}] to value [{}] in bean [{}] for node {} due to {}",
new Object[] { propertyName, value, bean.getClass().getName(),
state.getCurrentNode().getPath(), e.toString() });
}
}
} |
File |
Line |
info/magnolia/module/model/reader/BetwixtModuleDefinitionReader.java |
139 |
info/magnolia/objectfactory/configuration/ComponentConfigurationReader.java |
113 |
final InputStreamReader reader = new InputStreamReader(resourceAsStream);
try {
return read(reader);
} finally {
try {
reader.close();
} catch (IOException e) {
log.error("Can't close input for " + resourcePath);
}
}
}
/**
* @deprecated TODO very ugly hack to force documents to be validated against OUR DTD.
* We could use an EntityResolver, but it seems that with SAX, the documents will only be
* validated if they original have a doctype declaration.
* We could also use http://doctypechanger.sourceforge.net/
* ... or switch to XmlSchema.
*/
private Reader replaceDtd(Reader reader) throws IOException {
String content = IOUtils.toString(reader);
// remove doctype
Pattern pattern = Pattern.compile("<!DOCTYPE .*>");
Matcher matcher = pattern.matcher(content);
content = matcher.replaceFirst("");
// set doctype to the dtd
try {
Document doc = new SAXBuilder().build(new StringReader(content));
doc.setDocType(new DocType("module", dtdUrl)); |
File |
Line |
info/magnolia/jcr/decoration/ContentDecoratorNodeWrapper.java |
85 |
info/magnolia/jcr/decoration/ContentDecoratorPropertyWrapper.java |
58 |
return contentDecorator;
}
@Override
public Session getSession() throws RepositoryException {
return wrapSession(super.getSession());
}
@Override
public Item getAncestor(int depth) throws ItemNotFoundException, AccessDeniedException, RepositoryException {
Item item = super.getAncestor(depth);
if (item.isNode()) {
return wrapNode((Node) item);
} else {
return wrapProperty((Property) item);
}
}
@Override
public Node getParent() throws ItemNotFoundException, AccessDeniedException, RepositoryException {
return wrapNode(super.getParent());
}
@Override
public Node addNode(String relPath) throws ItemExistsException, PathNotFoundException, VersionException, ConstraintViolationException, LockException, RepositoryException { |
File |
Line |
info/magnolia/module/delta/CopyNodeTask.java |
59 |
info/magnolia/module/delta/MoveNodeTask.java |
56 |
public CopyNodeTask(String name, String description, String workspaceName, String src, String dest, boolean overwrite) {
super(name, description);
this.workspaceName = workspaceName;
this.src = src;
this.dest = dest;
this.overwrite = overwrite;
}
@Override
protected void doExecute(InstallContext installContext) throws RepositoryException, TaskExecutionException {
Session session = installContext.getJCRSession(workspaceName);
if (session.nodeExists(dest)) {
if (overwrite) {
session.getNode(dest).remove();
}
else {
installContext.error("Can't copy " + src + " to " + dest + " because the target node already exists.", null); |