diff --git a/spring-aop/src/main/java/org/springframework/aop/support/DynamicMethodMatcherPointcut.java b/spring-aop/src/main/java/org/springframework/aop/support/DynamicMethodMatcherPointcut.java index df3963dc853..56e29cb0bd9 100644 --- a/spring-aop/src/main/java/org/springframework/aop/support/DynamicMethodMatcherPointcut.java +++ b/spring-aop/src/main/java/org/springframework/aop/support/DynamicMethodMatcherPointcut.java @@ -24,7 +24,7 @@ import org.springframework.aop.Pointcut; * Convenient superclass when we want to force subclasses to * implement MethodMatcher interface, but subclasses * will want to be pointcuts. The getClassFilter() method can - * be overriden to customize ClassFilter behaviour as well. + * be overridden to customize ClassFilter behaviour as well. * * @author Rod Johnson */ diff --git a/spring-aop/src/test/java/org/springframework/aop/aspectj/MethodInvocationProceedingJoinPointTests.java b/spring-aop/src/test/java/org/springframework/aop/aspectj/MethodInvocationProceedingJoinPointTests.java index f8c39e7b44e..37f8094b5dc 100644 --- a/spring-aop/src/test/java/org/springframework/aop/aspectj/MethodInvocationProceedingJoinPointTests.java +++ b/spring-aop/src/test/java/org/springframework/aop/aspectj/MethodInvocationProceedingJoinPointTests.java @@ -44,7 +44,7 @@ import static org.junit.Assert.*; * @author Ramnivas Laddad * @since 2.0 */ -public final class MethodInvocationProceedingJoinPointTests { +public class MethodInvocationProceedingJoinPointTests { @Test public void testingBindingWithJoinPoint() { @@ -217,7 +217,7 @@ public final class MethodInvocationProceedingJoinPointTests { itb.unreliableFileOperation(); } catch (IOException ex) { - // we don't realy care... + // we don't really care... } } diff --git a/spring-beans/src/main/java/org/springframework/beans/factory/parsing/ComponentDefinition.java b/spring-beans/src/main/java/org/springframework/beans/factory/parsing/ComponentDefinition.java index 49c5f9f7b57..2a32e6750f4 100644 --- a/spring-beans/src/main/java/org/springframework/beans/factory/parsing/ComponentDefinition.java +++ b/spring-beans/src/main/java/org/springframework/beans/factory/parsing/ComponentDefinition.java @@ -52,7 +52,7 @@ import org.springframework.beans.factory.config.BeanReference; * all {@link BeanReference BeanReferences} that are required to validate the configuration of the * overall logical entity as well as those required to provide full user visualisation of the configuration. * It is expected that certain {@link BeanReference BeanReferences} will not be important to - * validation or to the user view of the configuration and as such these may be ommitted. A tool may wish to + * validation or to the user view of the configuration and as such these may be omitted. A tool may wish to * display any additional {@link BeanReference BeanReferences} sourced through the supplied * {@link BeanDefinition BeanDefinitions} but this is not considered to be a typical case. * diff --git a/spring-beans/src/main/java/org/springframework/beans/support/PagedListHolder.java b/spring-beans/src/main/java/org/springframework/beans/support/PagedListHolder.java index 4d7ff960135..190ec8e17dc 100644 --- a/spring-beans/src/main/java/org/springframework/beans/support/PagedListHolder.java +++ b/spring-beans/src/main/java/org/springframework/beans/support/PagedListHolder.java @@ -1,5 +1,5 @@ /* - * Copyright 2002-2012 the original author or authors. + * Copyright 2002-2018 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -27,7 +27,7 @@ import org.springframework.util.Assert; * PagedListHolder is a simple state holder for handling lists of objects, * separating them into pages. Page numbering starts with 0. * - *
This is mainly targetted at usage in web UIs. Typically, an instance will be + *
This is mainly targeted at usage in web UIs. Typically, an instance will be
* instantiated with a list of beans, put into the session, and exported as model.
* The properties can all be set/get programmatically, but the most common way will
* be data binding, i.e. populating the bean from request parameters. The getters
@@ -50,8 +50,14 @@ import org.springframework.util.Assert;
@SuppressWarnings("serial")
public class PagedListHolder Default is -1, leading to one-time execution. In case of zero or a
* positive value, the task will be executed repeatedly, with the given
- * interval inbetween executions.
+ * interval in-between executions.
* Note that the semantics of the period value vary between fixed-rate
* and fixed-delay execution.
* Note: A period of 0 (for example as fixed delay) is
diff --git a/spring-context-support/src/test/resources/org/springframework/scheduling/quartz/quartz-hsql.sql b/spring-context-support/src/test/resources/org/springframework/scheduling/quartz/quartz-hsql.sql
index 9f8b9d4788f..57e05e860a3 100644
--- a/spring-context-support/src/test/resources/org/springframework/scheduling/quartz/quartz-hsql.sql
+++ b/spring-context-support/src/test/resources/org/springframework/scheduling/quartz/quartz-hsql.sql
@@ -2,7 +2,7 @@
-- In your Quartz properties file, you'll need to set
-- org.quartz.jobStore.driverDelegateClass = org.quartz.impl.jdbcjobstore.HSQLDBDelegate
--
--- Column lenghts are only suggestions. For names, groups, use at least 40 chars.
+-- Column lengths are only suggestions. For names, groups, use at least 40 chars.
-- for blobs (VARBINARY) use a size that is sure to meet the needs of the amount of data
-- you place in job data maps, etc..
--
diff --git a/spring-context/src/main/java/org/springframework/cache/annotation/CacheAnnotationParser.java b/spring-context/src/main/java/org/springframework/cache/annotation/CacheAnnotationParser.java
index 80bafb871a7..cb06322f346 100644
--- a/spring-context/src/main/java/org/springframework/cache/annotation/CacheAnnotationParser.java
+++ b/spring-context/src/main/java/org/springframework/cache/annotation/CacheAnnotationParser.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2002-2014 the original author or authors.
+ * Copyright 2002-2018 the original author or authors.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -23,39 +23,38 @@ import org.springframework.cache.interceptor.CacheOperation;
/**
* Strategy interface for parsing known caching annotation types.
- * {@link AnnotationCacheOperationSource} delegates to such
- * parsers for supporting specific annotation types such as Spring's own
- * {@link Cacheable}, {@link CachePut} or {@link CacheEvict}.
+ * {@link AnnotationCacheOperationSource} delegates to such parsers
+ * for supporting specific annotation types such as Spring's own
+ * {@link Cacheable}, {@link CachePut} and{@link CacheEvict}.
*
* @author Costin Leau
* @author Stephane Nicoll
* @since 3.1
+ * @see AnnotationCacheOperationSource
+ * @see SpringCacheAnnotationParser
*/
public interface CacheAnnotationParser {
/**
- * Parses the cache definition for the given class,
- * based on a known annotation type.
- * This essentially parses a known cache annotation into Spring's
- * metadata attribute class. Returns {@code null} if the class
- * is not cacheable.
+ * Parse the cache definition for the given class,
+ * based on an annotation type understood by this parser.
+ * This essentially parses a known cache annotation into Spring's metadata
+ * attribute class. Returns {@code null} if the class is not cacheable.
* @param type the annotated class
- * @return CacheOperation the configured caching operation,
- * or {@code null} if none was found
+ * @return the configured caching operation, or {@code null} if none found
* @see AnnotationCacheOperationSource#findCacheOperations(Class)
*/
Collection This essentially parses a known cache annotation into Spring's
- * metadata attribute class. Returns {@code null} if the method
- * is not cacheable.
+ * Parse the cache definition for the given method,
+ * based on an annotation type understood by this parser.
+ * This essentially parses a known cache annotation into Spring's metadata
+ * attribute class. Returns {@code null} if the method is not cacheable.
* @param method the annotated method
- * @return CacheOperation the configured caching operation,
- * or {@code null} if none was found
+ * @return the configured caching operation, or {@code null} if none found
* @see AnnotationCacheOperationSource#findCacheOperations(Method)
*/
Collection Generally, this internal factory will only be accessible while the context
- * is active, that is, inbetween {@link #refresh()} and {@link #close()}.
+ * is active, that is, in-between {@link #refresh()} and {@link #close()}.
* The {@link #isActive()} flag can be used to check whether the context
* is in an appropriate state.
* @return the underlying bean factory
diff --git a/spring-context/src/main/java/org/springframework/jmx/export/assembler/AbstractReflectiveMBeanInfoAssembler.java b/spring-context/src/main/java/org/springframework/jmx/export/assembler/AbstractReflectiveMBeanInfoAssembler.java
index a950b7eb7fe..340a0671b8b 100644
--- a/spring-context/src/main/java/org/springframework/jmx/export/assembler/AbstractReflectiveMBeanInfoAssembler.java
+++ b/spring-context/src/main/java/org/springframework/jmx/export/assembler/AbstractReflectiveMBeanInfoAssembler.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2002-2015 the original author or authors.
+ * Copyright 2002-2018 the original author or authors.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -334,7 +334,7 @@ public abstract class AbstractReflectiveMBeanInfoAssembler extends AbstractMBean
/**
* Iterate through all methods on the MBean class and gives subclasses the chance
* to vote on their inclusion. If a particular method corresponds to the accessor
- * or mutator of an attribute that is inclued in the managment interface, then
+ * or mutator of an attribute that is included in the management interface, then
* the corresponding operation is exposed with the "role" descriptor
* field set to the appropriate value.
* @param managedBean the bean instance (might be an AOP proxy)
@@ -358,25 +358,23 @@ public abstract class AbstractReflectiveMBeanInfoAssembler extends AbstractMBean
ModelMBeanOperationInfo info = null;
PropertyDescriptor pd = BeanUtils.findPropertyForMethod(method);
- if (pd != null) {
- if ((method.equals(pd.getReadMethod()) && includeReadAttribute(method, beanKey)) ||
- (method.equals(pd.getWriteMethod()) && includeWriteAttribute(method, beanKey))) {
- // Attributes need to have their methods exposed as
- // operations to the JMX server as well.
- info = createModelMBeanOperationInfo(method, pd.getName(), beanKey);
- Descriptor desc = info.getDescriptor();
- if (method.equals(pd.getReadMethod())) {
- desc.setField(FIELD_ROLE, ROLE_GETTER);
- }
- else {
- desc.setField(FIELD_ROLE, ROLE_SETTER);
- }
- desc.setField(FIELD_VISIBILITY, ATTRIBUTE_OPERATION_VISIBILITY);
- if (isExposeClassDescriptor()) {
- desc.setField(FIELD_CLASS, getClassForDescriptor(managedBean).getName());
- }
- info.setDescriptor(desc);
+ if (pd != null && ((method.equals(pd.getReadMethod()) && includeReadAttribute(method, beanKey)) ||
+ (method.equals(pd.getWriteMethod()) && includeWriteAttribute(method, beanKey)))) {
+ // Attributes need to have their methods exposed as
+ // operations to the JMX server as well.
+ info = createModelMBeanOperationInfo(method, pd.getName(), beanKey);
+ Descriptor desc = info.getDescriptor();
+ if (method.equals(pd.getReadMethod())) {
+ desc.setField(FIELD_ROLE, ROLE_GETTER);
+ }
+ else {
+ desc.setField(FIELD_ROLE, ROLE_SETTER);
+ }
+ desc.setField(FIELD_VISIBILITY, ATTRIBUTE_OPERATION_VISIBILITY);
+ if (isExposeClassDescriptor()) {
+ desc.setField(FIELD_CLASS, getClassForDescriptor(managedBean).getName());
}
+ info.setDescriptor(desc);
}
// allow getters and setters to be marked as operations directly
diff --git a/spring-context/src/main/java/org/springframework/scheduling/concurrent/ScheduledExecutorTask.java b/spring-context/src/main/java/org/springframework/scheduling/concurrent/ScheduledExecutorTask.java
index 1ed39081625..e119a63e45c 100644
--- a/spring-context/src/main/java/org/springframework/scheduling/concurrent/ScheduledExecutorTask.java
+++ b/spring-context/src/main/java/org/springframework/scheduling/concurrent/ScheduledExecutorTask.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2002-2013 the original author or authors.
+ * Copyright 2002-2017 the original author or authors.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -127,7 +127,7 @@ public class ScheduledExecutorTask {
/**
* Set the period between repeated task executions, in milliseconds.
* Default is -1, leading to one-time execution. In case of a positive value,
- * the task will be executed repeatedly, with the given interval inbetween executions.
+ * the task will be executed repeatedly, with the given interval in-between executions.
* Note that the semantics of the period value vary between fixed-rate and
* fixed-delay execution.
* Note: A period of 0 (for example as fixed delay) is not supported,
diff --git a/spring-context/src/test/java/org/springframework/aop/framework/ProxyFactoryBeanTests.java b/spring-context/src/test/java/org/springframework/aop/framework/ProxyFactoryBeanTests.java
index 78b8e5f25bd..ef55d73e0f5 100644
--- a/spring-context/src/test/java/org/springframework/aop/framework/ProxyFactoryBeanTests.java
+++ b/spring-context/src/test/java/org/springframework/aop/framework/ProxyFactoryBeanTests.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2002-2015 the original author or authors.
+ * Copyright 2002-2016 the original author or authors.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -69,7 +69,7 @@ import static org.junit.Assert.*;
* @author Juergen Hoeller
* @author Chris Beams
*/
-public final class ProxyFactoryBeanTests {
+public class ProxyFactoryBeanTests {
private static final Class> CLASS = ProxyFactoryBeanTests.class;
private static final String CLASSNAME = CLASS.getSimpleName();
@@ -259,22 +259,22 @@ public final class ProxyFactoryBeanTests {
// Check it works without AOP
SideEffectBean raw = (SideEffectBean) bf.getBean("prototypeTarget");
- assertEquals(INITIAL_COUNT, raw.getCount() );
+ assertEquals(INITIAL_COUNT, raw.getCount());
raw.doWork();
- assertEquals(INITIAL_COUNT+1, raw.getCount() );
+ assertEquals(INITIAL_COUNT+1, raw.getCount());
raw = (SideEffectBean) bf.getBean("prototypeTarget");
- assertEquals(INITIAL_COUNT, raw.getCount() );
+ assertEquals(INITIAL_COUNT, raw.getCount());
// Now try with advised instances
SideEffectBean prototype2FirstInstance = (SideEffectBean) bf.getBean(beanName);
- assertEquals(INITIAL_COUNT, prototype2FirstInstance.getCount() );
+ assertEquals(INITIAL_COUNT, prototype2FirstInstance.getCount());
prototype2FirstInstance.doWork();
- assertEquals(INITIAL_COUNT + 1, prototype2FirstInstance.getCount() );
+ assertEquals(INITIAL_COUNT + 1, prototype2FirstInstance.getCount());
SideEffectBean prototype2SecondInstance = (SideEffectBean) bf.getBean(beanName);
assertFalse("Prototypes are not ==", prototype2FirstInstance == prototype2SecondInstance);
- assertEquals(INITIAL_COUNT, prototype2SecondInstance.getCount() );
- assertEquals(INITIAL_COUNT + 1, prototype2FirstInstance.getCount() );
+ assertEquals(INITIAL_COUNT, prototype2SecondInstance.getCount());
+ assertEquals(INITIAL_COUNT + 1, prototype2FirstInstance.getCount());
return prototype2FirstInstance;
}
@@ -397,7 +397,7 @@ public final class ProxyFactoryBeanTests {
config.removeAdvice(debugInterceptor);
it.getSpouse();
- // Still invoked wiht old reference
+ // Still invoked with old reference
assertEquals(2, debugInterceptor.getCount());
// not invoked with new object
@@ -714,7 +714,7 @@ public final class ProxyFactoryBeanTests {
@SuppressWarnings("serial")
public static class PointcutForVoid extends DefaultPointcutAdvisor {
- public static List This base class does not assume any specific mechanism for asynchronous
diff --git a/spring-jms/src/main/java/org/springframework/jms/support/destination/BeanFactoryDestinationResolver.java b/spring-jms/src/main/java/org/springframework/jms/support/destination/BeanFactoryDestinationResolver.java
index 73591a51eb2..bdf1ede0ed4 100644
--- a/spring-jms/src/main/java/org/springframework/jms/support/destination/BeanFactoryDestinationResolver.java
+++ b/spring-jms/src/main/java/org/springframework/jms/support/destination/BeanFactoryDestinationResolver.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2002-2012 the original author or authors.
+ * Copyright 2002-2017 the original author or authors.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -79,7 +79,7 @@ public class BeanFactoryDestinationResolver implements DestinationResolver, Bean
}
catch (BeansException ex) {
throw new DestinationResolutionException(
- "Failed to look up Destinaton bean with name '" + destinationName + "'", ex);
+ "Failed to look up Destination bean with name '" + destinationName + "'", ex);
}
}
diff --git a/spring-oxm/src/main/java/org/springframework/oxm/support/package-info.java b/spring-oxm/src/main/java/org/springframework/oxm/support/package-info.java
index 248820f37e3..d8f7c3689bc 100644
--- a/spring-oxm/src/main/java/org/springframework/oxm/support/package-info.java
+++ b/spring-oxm/src/main/java/org/springframework/oxm/support/package-info.java
@@ -1,7 +1,7 @@
/**
* Provides generic support classes for using Spring's O/X Mapping integration
* within various scenario's. Includes the MarshallingSource for compatibility
- * with TrAX, MarshallingView for use withing Spring Web MVC, and the
+ * with TrAX, MarshallingView for use within Spring Web MVC, and the
* MarshallingMessageConverter for use within Spring's JMS support.
*/
package org.springframework.oxm.support;
diff --git a/spring-tx/src/main/java/org/springframework/dao/CannotAcquireLockException.java b/spring-tx/src/main/java/org/springframework/dao/CannotAcquireLockException.java
index 82cd00574b4..e9df692b8f0 100644
--- a/spring-tx/src/main/java/org/springframework/dao/CannotAcquireLockException.java
+++ b/spring-tx/src/main/java/org/springframework/dao/CannotAcquireLockException.java
@@ -17,7 +17,7 @@
package org.springframework.dao;
/**
- * Exception thrown on failure to aquire a lock during an update,
+ * Exception thrown on failure to acquire a lock during an update,
* for example during a "select for update" statement.
*
* @author Rod Johnson
diff --git a/spring-tx/src/main/java/org/springframework/transaction/annotation/AnnotationTransactionAttributeSource.java b/spring-tx/src/main/java/org/springframework/transaction/annotation/AnnotationTransactionAttributeSource.java
index 958371d9a03..138a48b089f 100644
--- a/spring-tx/src/main/java/org/springframework/transaction/annotation/AnnotationTransactionAttributeSource.java
+++ b/spring-tx/src/main/java/org/springframework/transaction/annotation/AnnotationTransactionAttributeSource.java
@@ -129,13 +129,13 @@ public class AnnotationTransactionAttributeSource extends AbstractFallbackTransa
@Override
- protected TransactionAttribute findTransactionAttribute(Method method) {
- return determineTransactionAttribute(method);
+ protected TransactionAttribute findTransactionAttribute(Class> clazz) {
+ return determineTransactionAttribute(clazz);
}
@Override
- protected TransactionAttribute findTransactionAttribute(Class> clazz) {
- return determineTransactionAttribute(clazz);
+ protected TransactionAttribute findTransactionAttribute(Method method) {
+ return determineTransactionAttribute(method);
}
/**
diff --git a/spring-tx/src/main/java/org/springframework/transaction/interceptor/AbstractFallbackTransactionAttributeSource.java b/spring-tx/src/main/java/org/springframework/transaction/interceptor/AbstractFallbackTransactionAttributeSource.java
index 68131701cab..43744ee38cd 100644
--- a/spring-tx/src/main/java/org/springframework/transaction/interceptor/AbstractFallbackTransactionAttributeSource.java
+++ b/spring-tx/src/main/java/org/springframework/transaction/interceptor/AbstractFallbackTransactionAttributeSource.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2002-2017 the original author or authors.
+ * Copyright 2002-2018 the original author or authors.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -54,7 +54,13 @@ public abstract class AbstractFallbackTransactionAttributeSource implements Tran
* Canonical value held in cache to indicate no transaction attribute was
* found for this method, and we don't need to look again.
*/
- private final static TransactionAttribute NULL_TRANSACTION_ATTRIBUTE = new DefaultTransactionAttribute();
+ @SuppressWarnings("serial")
+ private static final TransactionAttribute NULL_TRANSACTION_ATTRIBUTE = new DefaultTransactionAttribute() {
+ @Override
+ public String toString() {
+ return "null";
+ }
+ };
/**
@@ -78,7 +84,7 @@ public abstract class AbstractFallbackTransactionAttributeSource implements Tran
* Defaults to the class's transaction attribute if no method attribute is found.
* @param method the method for the current invocation (never {@code null})
* @param targetClass the target class for this invocation (may be {@code null})
- * @return TransactionAttribute for this method, or {@code null} if the method
+ * @return a TransactionAttribute for this method, or {@code null} if the method
* is not transactional
*/
@Override
@@ -89,7 +95,7 @@ public abstract class AbstractFallbackTransactionAttributeSource implements Tran
// First, see if we have a cached value.
Object cacheKey = getCacheKey(method, targetClass);
- Object cached = this.attributeCache.get(cacheKey);
+ TransactionAttribute cached = this.attributeCache.get(cacheKey);
if (cached != null) {
// Value will either be canonical value indicating there is no transaction attribute,
// or an actual transaction attribute.
@@ -97,7 +103,7 @@ public abstract class AbstractFallbackTransactionAttributeSource implements Tran
return null;
}
else {
- return (TransactionAttribute) cached;
+ return cached;
}
}
else {
@@ -184,23 +190,20 @@ public abstract class AbstractFallbackTransactionAttributeSource implements Tran
/**
- * Subclasses need to implement this to return the transaction attribute
- * for the given method, if any.
- * @param method the method to retrieve the attribute for
- * @return all transaction attribute associated with this method
- * (or {@code null} if none)
- */
- protected abstract TransactionAttribute findTransactionAttribute(Method method);
-
- /**
- * Subclasses need to implement this to return the transaction attribute
- * for the given class, if any.
+ * Subclasses need to implement this to return the transaction attribute for the
+ * given class, if any.
* @param clazz the class to retrieve the attribute for
- * @return all transaction attribute associated with this class
- * (or {@code null} if none)
+ * @return all transaction attribute associated with this class, or {@code null} if none
*/
protected abstract TransactionAttribute findTransactionAttribute(Class> clazz);
+ /**
+ * Subclasses need to implement this to return the transaction attribute for the
+ * given method, if any.
+ * @param method the method to retrieve the attribute for
+ * @return all transaction attribute associated with this method, or {@code null} if none
+ */
+ protected abstract TransactionAttribute findTransactionAttribute(Method method);
/**
* Should only public methods be allowed to have transactional semantics?
diff --git a/spring-tx/src/test/java/org/springframework/transaction/interceptor/MapTransactionAttributeSource.java b/spring-tx/src/test/java/org/springframework/transaction/interceptor/MapTransactionAttributeSource.java
index 0e5aea25f8d..348a5460b8a 100644
--- a/spring-tx/src/test/java/org/springframework/transaction/interceptor/MapTransactionAttributeSource.java
+++ b/spring-tx/src/test/java/org/springframework/transaction/interceptor/MapTransactionAttributeSource.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2002-2014 the original author or authors.
+ * Copyright 2002-2018 the original author or authors.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -28,26 +28,26 @@ import java.util.Map;
*/
public class MapTransactionAttributeSource extends AbstractFallbackTransactionAttributeSource {
- private final Map