Mentioned this on IRC, but here is where our CDI failures started. Tracked
this down via cycling through OWB and OpenEJB commits one at a time. So if it
was an OWB commit that cause the failure it would have shown up in that build.
#!/bin/bash
r="$1"
a="$2"
(mkdir $r && cd $r
svn co -r $r http://svn.apache.org/repos/asf/openwebbeans/trunk
openwebbeans
svn co -r $r http://svn.apache.org/repos/asf/openejb/trunk/openejb3
for n in openwebbeans openejb3; do
(cd $n && mvn -o clean install -Dmaven.test.skip=true
-DfailIfNoTests=false | tee build.log)
done
(cd openejb3/tck/cdi-tomee && mvn -o clean install)
} | tee build-$r-$a.log
Here are the results:
build-1150849-dblevins.log:Tests run: 774, Failures: 553, Errors: 0,
Skipped: 0, Time elapsed: 1,127.015 sec <<< FAILURE!
build-1150892-dblevins.log:Tests run: 774, Failures: 0, Errors: 0, Skipped:
0, Time elapsed: 598.361 sec
build-1150906-struberg.log:Tests run: 774, Failures: 0, Errors: 0, Skipped:
0, Time elapsed: 596.573 sec
build-1150911-struberg.log:Tests run: 774, Failures: 0, Errors: 0, Skipped:
0, Time elapsed: 593.837 sec
build-1150931-rmannibucau.log:Tests run: 774, Failures: 0, Errors: 0,
Skipped: 0, Time elapsed: 594.85 sec
build-1150934-rmannibucau.log:Tests run: 774, Failures: 0, Errors: 0,
Skipped: 0, Time elapsed: 609.096 sec
build-1150947-struberg.log:Tests run: 774, Failures: 0, Errors: 0, Skipped:
0, Time elapsed: 603.514 sec
build-1150953-struberg.log:Tests run: 789, Failures: 7, Errors: 0, Skipped:
52, Time elapsed: 1,174.83 sec <<< FAILURE!
build-1151006-jlmonteiro.log:Tests run: 774, Failures: 0, Errors: 0,
Skipped: 0, Time elapsed: 596.265 sec
build-1151008-jlmonteiro.log:Tests run: 774, Failures: 1, Errors: 0,
Skipped: 0, Time elapsed: 604.61 sec <<< FAILURE!
build-1151011-jlmonteiro.log:Tests run: 774, Failures: 0, Errors: 0,
Skipped: 0, Time elapsed: 593.912 sec
build-1151137-struberg.log:Tests run: 774, Failures: 0, Errors: 0, Skipped:
0, Time elapsed: 585.591 sec
build-1151330-genspring.log:Tests run: 774, Failures: 0, Errors: 0,
Skipped: 0, Time elapsed: 599.099 sec
build-1151522-genspring.log:Tests run: 774, Failures: 0, Errors: 0,
Skipped: 0, Time elapsed: 580.763 sec
build-1151586-rmannibucau.log:Tests run: 774, Failures: 0, Errors: 0,
Skipped: 0, Time elapsed: 574.463 sec
build-1151645-struberg.log:Tests run: 774, Failures: 0, Errors: 0, Skipped:
0, Time elapsed: 574.062 sec
build-1151772-struberg.log:Tests run: 774, Failures: 0, Errors: 0, Skipped:
0, Time elapsed: 599.954 sec
build-1151773-struberg.log:Tests run: 774, Failures: 0, Errors: 0, Skipped:
0, Time elapsed: 625.777 sec
build-1152071-genspring.log:Tests run: 774, Failures: 0, Errors: 0,
Skipped: 0, Time elapsed: 605.217 sec
build-1152606-rmannibucau.log:Tests run: 774, Failures: 0, Errors: 0,
Skipped: 0, Time elapsed: 615.444 sec
build-1152629-rmannibucau.log:Tests run: 774, Failures: 0, Errors: 0,
Skipped: 0, Time elapsed: 604.744 sec
build-1152703-rmannibucau.log:Tests run: 774, Failures: 0, Errors: 0,
Skipped: 0, Time elapsed: 589.082 sec
build-1152704-rmannibucau.log:Tests run: 774, Failures: 0, Errors: 0,
Skipped: 0, Time elapsed: 604.731 sec
build-1152705-rmannibucau.log:Tests run: 774, Failures: 0, Errors: 0,
Skipped: 0, Time elapsed: 596.312 sec
build-1152712-rmannibucau.log:Tests run: 774, Failures: 0, Errors: 0,
Skipped: 0, Time elapsed: 590.136 sec
build-1152715-rmannibucau.log:Tests run: 774, Failures: 0, Errors: 0,
Skipped: 0, Time elapsed: 599.099 sec
build-1152746-rmannibucau.log:Tests run: 774, Failures: 0, Errors: 0,
Skipped: 0, Time elapsed: 622.18 sec
build-1152756-rmannibucau.log:Tests run: 774, Failures: 48, Errors: 0,
Skipped: 0, Time elapsed: 603.075 sec <<< FAILURE!
build-1152758-rmannibucau.log:Tests run: 774, Failures: 48, Errors: 0,
Skipped: 0, Time elapsed: 565.456 sec <<< FAILURE!
Not sure when the failures went from 48 to 109. Currently using my machines to
track down the source of the connector failures on the Java EE TCK side.
-David
Begin forwarded message:
> Resent-From: <[email protected]>
> From: [email protected]
> Date: August 1, 2011 6:13:55 AM PDT
> To: [email protected]
> Subject: svn commit: r1152756 - in /openejb/trunk/openejb3/container:
> openejb-api/src/main/java/org/apache/openejb/api/
> openejb-core/src/main/java/org/apache/openejb/assembler/classic/
> openejb-core/src/main/java/org/apache/openejb/cdi/
> openejb-core/src/main/jav...
> Reply-To: [email protected]
>
> Author: rmannibucau
> Date: Mon Aug 1 13:13:52 2011
> New Revision: 1152756
>
> URL: http://svn.apache.org/viewvc?rev=1152756&view=rev
> Log:
> allowing to inject repository into session beans
>
> Added:
>
> openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/RepositoryReferenceInfo.java
>
> openejb/trunk/openejb3/container/openejb-jee/src/main/java/org/apache/openejb/jee/RepositoryRef.java
> Modified:
>
> openejb/trunk/openejb3/container/openejb-api/src/main/java/org/apache/openejb/api/Repository.java
>
> openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/Assembler.java
>
> openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/InjectionBuilder.java
>
> openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/JndiEncBuilder.java
>
> openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/JndiEncInfo.java
>
> openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/cdi/CdiBeanInfo.java
>
> openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/config/AnnotationDeployer.java
>
> openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/config/JndiEncInfoBuilder.java
>
> openejb/trunk/openejb3/container/openejb-jee/src/main/java/org/apache/openejb/jee/Application.java
>
> openejb/trunk/openejb3/container/openejb-jee/src/main/java/org/apache/openejb/jee/ApplicationClient.java
>
> openejb/trunk/openejb3/container/openejb-jee/src/main/java/org/apache/openejb/jee/EntityBean.java
>
> openejb/trunk/openejb3/container/openejb-jee/src/main/java/org/apache/openejb/jee/Interceptor.java
>
> openejb/trunk/openejb3/container/openejb-jee/src/main/java/org/apache/openejb/jee/JndiConsumer.java
>
> openejb/trunk/openejb3/container/openejb-jee/src/main/java/org/apache/openejb/jee/MessageDrivenBean.java
>
> openejb/trunk/openejb3/container/openejb-jee/src/main/java/org/apache/openejb/jee/SessionBean.java
>
> openejb/trunk/openejb3/container/openejb-jee/src/main/java/org/apache/openejb/jee/WebApp.java
>
> openejb/trunk/openejb3/container/openejb-jee/src/main/java/org/apache/openejb/jee/WebFragment.java
>
> Modified:
> openejb/trunk/openejb3/container/openejb-api/src/main/java/org/apache/openejb/api/Repository.java
> URL:
> http://svn.apache.org/viewvc/openejb/trunk/openejb3/container/openejb-api/src/main/java/org/apache/openejb/api/Repository.java?rev=1152756&r1=1152755&r2=1152756&view=diff
> ==============================================================================
> ---
> openejb/trunk/openejb3/container/openejb-api/src/main/java/org/apache/openejb/api/Repository.java
> (original)
> +++
> openejb/trunk/openejb3/container/openejb-api/src/main/java/org/apache/openejb/api/Repository.java
> Mon Aug 1 13:13:52 2011
> @@ -9,7 +9,7 @@ import java.lang.annotation.Target;
> /**
> * @author rmannibucau
> */
> -@Target({ ElementType.TYPE })
> +@Target({ ElementType.TYPE, ElementType.FIELD })
> @Retention(RetentionPolicy.RUNTIME)
> public @interface Repository {
> PersistenceContext context() default @PersistenceContext;
>
> Modified:
> openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/Assembler.java
> URL:
> http://svn.apache.org/viewvc/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/Assembler.java?rev=1152756&r1=1152755&r2=1152756&view=diff
> ==============================================================================
> ---
> openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/Assembler.java
> (original)
> +++
> openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/Assembler.java
> Mon Aug 1 13:13:52 2011
> @@ -127,9 +127,12 @@ public class Assembler extends Assembler
> public static final String VALIDATOR_FACTORY_NAMING_CONTEXT =
> JAVA_OPENEJB_NAMING_CONTEXT + "ValidatorFactory/";
> public static final String VALIDATOR_NAMING_CONTEXT =
> JAVA_OPENEJB_NAMING_CONTEXT + "Validator/";
>
> + public static final String REPOSITORY_NAMING_CONTEXT =
> JAVA_OPENEJB_NAMING_CONTEXT + "Repository/";
> +
> private static final String OPENEJB_URL_PKG_PREFIX =
> "org.apache.openejb.core.ivm.naming";
>
> public static final Logger logger =
> Logger.getInstance(LogCategory.OPENEJB_STARTUP, Assembler.class);
> +
> Messages messages = new Messages(Assembler.class.getPackage().getName());
>
> private final CoreContainerSystem containerSystem;
> @@ -694,7 +697,6 @@ public class Assembler extends Assembler
> try {
> Class<?> proxied = classLoader.loadClass(repository);
>
> - // TODO: move it in config?
> Repository annotation =
> proxied.getAnnotation(Repository.class);
> PersistenceContext pc = annotation.context();
> String unitName = pc.unitName();
> @@ -727,7 +729,7 @@ public class Assembler extends Assembler
>
> String jndi = annotation.jndiName();
> if (jndi == null || jndi.isEmpty()) {
> - jndi = "openejb/Repository/" + repository;
> + jndi = REPOSITORY_NAMING_CONTEXT + repository;
> }
>
> // TODO in a better way
>
> Modified:
> openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/InjectionBuilder.java
> URL:
> http://svn.apache.org/viewvc/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/InjectionBuilder.java?rev=1152756&r1=1152755&r2=1152756&view=diff
> ==============================================================================
> ---
> openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/InjectionBuilder.java
> (original)
> +++
> openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/InjectionBuilder.java
> Mon Aug 1 13:13:52 2011
> @@ -95,6 +95,15 @@ public class InjectionBuilder {
> injections.add(injection);
> }
> }
> +
> + for (RepositoryReferenceInfo info : jndiEnc.repositoryRefs) {
> + for (InjectionInfo target : info.targets) {
> + Class targetClass = loadClass(target.className);
> + Injection injection = new Injection(info.referenceName,
> target.propertyName, targetClass);
> + injections.add(injection);
> + }
> + }
> +
> return injections;
> }
>
>
> Modified:
> openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/JndiEncBuilder.java
> URL:
> http://svn.apache.org/viewvc/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/JndiEncBuilder.java?rev=1152756&r1=1152755&r2=1152756&view=diff
> ==============================================================================
> ---
> openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/JndiEncBuilder.java
> (original)
> +++
> openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/JndiEncBuilder.java
> Mon Aug 1 13:13:52 2011
> @@ -449,6 +449,12 @@ public class JndiEncBuilder {
> bindings.put(normalize(referenceInfo.referenceName),
> serviceRefData);
> }
> }
> +
> + for (RepositoryReferenceInfo repositoryInfo :
> jndiEnc.repositoryRefs) {
> + Reference reference = new
> IntraVmJndiReference(Assembler.REPOSITORY_NAMING_CONTEXT +
> repositoryInfo.repository);
> + bindings.put(normalize(repositoryInfo.referenceName), reference);
> + }
> +
> return bindings;
> }
>
>
> Modified:
> openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/JndiEncInfo.java
> URL:
> http://svn.apache.org/viewvc/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/JndiEncInfo.java?rev=1152756&r1=1152755&r2=1152756&view=diff
> ==============================================================================
> ---
> openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/JndiEncInfo.java
> (original)
> +++
> openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/JndiEncInfo.java
> Mon Aug 1 13:13:52 2011
> @@ -34,4 +34,5 @@ public class JndiEncInfo extends InfoObj
> public final List<PersistenceContextReferenceInfo> persistenceContextRefs
> = new ArrayList<PersistenceContextReferenceInfo>();
> public final List<ResourceEnvReferenceInfo> resourceEnvRefs = new
> ArrayList<ResourceEnvReferenceInfo>();
> public final List<ServiceReferenceInfo> serviceRefs = new
> ArrayList<ServiceReferenceInfo>();
> + public final List<RepositoryReferenceInfo> repositoryRefs = new
> ArrayList<RepositoryReferenceInfo>();
> }
>
> Added:
> openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/RepositoryReferenceInfo.java
> URL:
> http://svn.apache.org/viewvc/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/RepositoryReferenceInfo.java?rev=1152756&view=auto
> ==============================================================================
> ---
> openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/RepositoryReferenceInfo.java
> (added)
> +++
> openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/RepositoryReferenceInfo.java
> Mon Aug 1 13:13:52 2011
> @@ -0,0 +1,8 @@
> +package org.apache.openejb.assembler.classic;
> +
> +/**
> + * @author rmannibucau
> + */
> +public class RepositoryReferenceInfo extends InjectableInfo {
> + public String repository;
> +}
>
> Modified:
> openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/cdi/CdiBeanInfo.java
> URL:
> http://svn.apache.org/viewvc/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/cdi/CdiBeanInfo.java?rev=1152756&r1=1152755&r2=1152756&view=diff
> ==============================================================================
> ---
> openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/cdi/CdiBeanInfo.java
> (original)
> +++
> openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/cdi/CdiBeanInfo.java
> Mon Aug 1 13:13:52 2011
> @@ -17,22 +17,9 @@
> package org.apache.openejb.cdi;
>
> import org.apache.openejb.Injection;
> -import org.apache.openejb.jee.DataSource;
> -import org.apache.openejb.jee.EjbLocalRef;
> -import org.apache.openejb.jee.EjbRef;
> -import org.apache.openejb.jee.EnvEntry;
> -import org.apache.openejb.jee.JndiConsumer;
> -import org.apache.openejb.jee.KeyedCollection;
> -import org.apache.openejb.jee.LifecycleCallback;
> -import org.apache.openejb.jee.MessageDestinationRef;
> -import org.apache.openejb.jee.PersistenceContextRef;
> -import org.apache.openejb.jee.PersistenceUnitRef;
> -import org.apache.openejb.jee.ResourceEnvRef;
> -import org.apache.openejb.jee.ResourceRef;
> -import org.apache.openejb.jee.SecurityIdentity;
> -import org.apache.openejb.jee.SecurityRoleRef;
> -import org.apache.openejb.jee.ServiceRef;
> +import org.apache.openejb.jee.*;
>
> +import javax.xml.bind.annotation.XmlTransient;
> import java.util.ArrayList;
> import java.util.Collection;
> import java.util.List;
> @@ -59,6 +46,7 @@ public class CdiBeanInfo implements Jndi
> private String beanName;
> private ClassLoader classLoader;
> private List<Injection> injections;
> + protected KeyedCollection<String, RepositoryRef> repositoryRefs;
>
> public String getBeanName() {
> return beanName;
> @@ -288,4 +276,20 @@ public class CdiBeanInfo implements Jndi
> public Class<?> getBeanClass() {
> return this.beanClass;
> }
> +
> + @Override
> + public Collection<RepositoryRef> getRepositoryRef() {
> + if (repositoryRefs == null) {
> + repositoryRefs = new KeyedCollection<String,RepositoryRef>();
> + }
> + return repositoryRefs;
> + }
> +
> + @Override
> + public Map<String, RepositoryRef> getRepositoryRefMap() {
> + if (repositoryRefs == null) {
> + repositoryRefs = new KeyedCollection<String,RepositoryRef>();
> + }
> + return repositoryRefs.toMap();
> + }
> }
>
> Modified:
> openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/config/AnnotationDeployer.java
> URL:
> http://svn.apache.org/viewvc/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/config/AnnotationDeployer.java?rev=1152756&r1=1152755&r2=1152756&view=diff
> ==============================================================================
> ---
> openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/config/AnnotationDeployer.java
> (original)
> +++
> openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/config/AnnotationDeployer.java
> Mon Aug 1 13:13:52 2011
> @@ -132,91 +132,7 @@ import org.apache.openejb.api.RemoteClie
> import org.apache.openejb.api.Repository;
> import org.apache.openejb.cdi.CdiBeanInfo;
> import org.apache.openejb.core.webservices.JaxWsUtils;
> -import org.apache.openejb.jee.ActivationConfig;
> -import org.apache.openejb.jee.ActivationSpec;
> -import org.apache.openejb.jee.AdminObject;
> -import org.apache.openejb.jee.ApplicationClient;
> -import org.apache.openejb.jee.AroundInvoke;
> -import org.apache.openejb.jee.AroundTimeout;
> -import org.apache.openejb.jee.AssemblyDescriptor;
> -import org.apache.openejb.jee.AsyncMethod;
> -import org.apache.openejb.jee.AuthenticationMechanism;
> -import org.apache.openejb.jee.Beans;
> -import org.apache.openejb.jee.ConcurrencyManagementType;
> -import org.apache.openejb.jee.ConcurrentLockType;
> -import org.apache.openejb.jee.ConcurrentMethod;
> -import org.apache.openejb.jee.ConfigProperty;
> -import org.apache.openejb.jee.ContainerConcurrency;
> -import org.apache.openejb.jee.ContainerTransaction;
> -import org.apache.openejb.jee.EjbJar;
> -import org.apache.openejb.jee.EjbLocalRef;
> -import org.apache.openejb.jee.EjbRef;
> -import org.apache.openejb.jee.EjbReference;
> -import org.apache.openejb.jee.Empty;
> -import org.apache.openejb.jee.EnterpriseBean;
> -import org.apache.openejb.jee.EnvEntry;
> -import org.apache.openejb.jee.ExcludeList;
> -import org.apache.openejb.jee.FacesConfig;
> -import org.apache.openejb.jee.FacesManagedBean;
> -import org.apache.openejb.jee.Filter;
> -import org.apache.openejb.jee.Handler;
> -import org.apache.openejb.jee.HandlerChains;
> -import org.apache.openejb.jee.Icon;
> -import org.apache.openejb.jee.InboundResourceadapter;
> -import org.apache.openejb.jee.InitMethod;
> -import org.apache.openejb.jee.Injectable;
> -import org.apache.openejb.jee.InjectionTarget;
> -import org.apache.openejb.jee.Interceptor;
> -import org.apache.openejb.jee.InterceptorBinding;
> -import org.apache.openejb.jee.Invokable;
> -import org.apache.openejb.jee.JndiConsumer;
> -import org.apache.openejb.jee.JndiReference;
> -import org.apache.openejb.jee.License;
> -import org.apache.openejb.jee.Lifecycle;
> -import org.apache.openejb.jee.LifecycleCallback;
> -import org.apache.openejb.jee.Listener;
> -import org.apache.openejb.jee.MessageAdapter;
> -import org.apache.openejb.jee.MessageDrivenBean;
> -import org.apache.openejb.jee.MessageListener;
> -import org.apache.openejb.jee.MethodAttribute;
> -import org.apache.openejb.jee.MethodParams;
> -import org.apache.openejb.jee.MethodPermission;
> -import org.apache.openejb.jee.NamedMethod;
> -import org.apache.openejb.jee.OutboundResourceAdapter;
> -import org.apache.openejb.jee.ParamValue;
> -import org.apache.openejb.jee.PersistenceContextRef;
> -import org.apache.openejb.jee.PersistenceContextType;
> -import org.apache.openejb.jee.PersistenceUnitRef;
> -import org.apache.openejb.jee.PortComponent;
> -import org.apache.openejb.jee.Property;
> -import org.apache.openejb.jee.RemoteBean;
> -import org.apache.openejb.jee.RemoveMethod;
> -import org.apache.openejb.jee.ResAuth;
> -import org.apache.openejb.jee.ResSharingScope;
> -import org.apache.openejb.jee.ResourceAdapter;
> -import org.apache.openejb.jee.ResourceEnvRef;
> -import org.apache.openejb.jee.ResourceRef;
> -import org.apache.openejb.jee.SecurityIdentity;
> -import org.apache.openejb.jee.SecurityRoleRef;
> -import org.apache.openejb.jee.ServiceRef;
> -import org.apache.openejb.jee.Servlet;
> -import org.apache.openejb.jee.SessionBean;
> -import org.apache.openejb.jee.SessionType;
> -import org.apache.openejb.jee.SingletonBean;
> -import org.apache.openejb.jee.StatefulBean;
> -import org.apache.openejb.jee.StatelessBean;
> -import org.apache.openejb.jee.Tag;
> -import org.apache.openejb.jee.Text;
> -import org.apache.openejb.jee.Timeout;
> -import org.apache.openejb.jee.Timer;
> -import org.apache.openejb.jee.TimerConsumer;
> -import org.apache.openejb.jee.TimerSchedule;
> -import org.apache.openejb.jee.TldTaglib;
> -import org.apache.openejb.jee.TransAttribute;
> -import org.apache.openejb.jee.TransactionSupportType;
> -import org.apache.openejb.jee.TransactionType;
> -import org.apache.openejb.jee.WebApp;
> -import org.apache.openejb.jee.WebserviceDescription;
> +import org.apache.openejb.jee.*;
> import org.apache.openejb.jee.oejb3.OpenejbJar;
> import org.apache.openejb.loader.SystemInstance;
> import org.apache.openejb.util.Join;
> @@ -3251,6 +3167,15 @@ public class AnnotationDeployer implemen
> buildPersistenceContext(consumer, pcFactory.create(pCtx,
> member), member);
> }
>
> + //
> + // @Repository
> + //
> + for (Annotated<Field> field :
> annotationFinder.findMetaAnnotatedFields(Repository.class)) {
> + Repository repo = field.getAnnotation(Repository.class);
> + Member member = new FieldMember(field.get());
> + buildRepository(consumer, repo, member);
> + }
> +
> }
>
> private void buildContext(JndiConsumer consumer, Member member) {
> @@ -3500,6 +3425,34 @@ public class AnnotationDeployer implemen
> getValidationContext().fail(component, key, details);
> }
>
> + private void buildRepository(JndiConsumer consumer, Repository repo,
> Member member) {
> + String refName = member.getDeclaringClass().getName() + "/" +
> member.getName();
> + refName = normalize(refName);
> +
> + RepositoryRef reference =
> consumer.getRepositoryRefMap().get(refName);
> + if (reference == null && member != null) {
> + reference = new RepositoryRef();
> + reference.setRepository(member.getType().getName());
> + reference.setName(refName);
> + consumer.getRepositoryRef().add(reference);
> + }
> +
> + if (member != null) {
> + InjectionTarget target = new InjectionTarget();
> +
> target.setInjectionTargetClass(member.getDeclaringClass().getName());
> + target.setInjectionTargetName(member.getName());
> + reference.getInjectionTarget().add(target);
> + }
> +
> + // Override the lookup name if not set
> + if (reference.getLookupName() == null) {
> + String lookupName = repo.jndiName();
> + if (!lookupName.equals("")) {
> + reference.setLookupName(lookupName);
> + }
> + }
> + }
> +
> /**
> * Process @Resource into either <resource-ref> or <resource-env-ref>
> for the given member (field or method) or class
> *
>
> Modified:
> openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/config/JndiEncInfoBuilder.java
> URL:
> http://svn.apache.org/viewvc/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/config/JndiEncInfoBuilder.java?rev=1152756&r1=1152755&r2=1152756&view=diff
> ==============================================================================
> ---
> openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/config/JndiEncInfoBuilder.java
> (original)
> +++
> openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/config/JndiEncInfoBuilder.java
> Mon Aug 1 13:13:52 2011
> @@ -19,43 +19,9 @@ package org.apache.openejb.config;
> import static org.apache.openejb.assembler.classic.EjbResolver.Scope.EJBJAR;
> import static org.apache.openejb.assembler.classic.EjbResolver.Scope.EAR;
> import org.apache.openejb.OpenEJBException;
> -import org.apache.openejb.assembler.classic.InjectableInfo;
> +import org.apache.openejb.assembler.classic.*;
> +import org.apache.openejb.jee.*;
> import org.apache.openejb.loader.SystemInstance;
> -import org.apache.openejb.assembler.classic.AppInfo;
> -import org.apache.openejb.assembler.classic.EjbLocalReferenceInfo;
> -import org.apache.openejb.assembler.classic.EjbReferenceInfo;
> -import org.apache.openejb.assembler.classic.EnterpriseBeanInfo;
> -import org.apache.openejb.assembler.classic.EnvEntryInfo;
> -import org.apache.openejb.assembler.classic.InjectionInfo;
> -import org.apache.openejb.assembler.classic.JndiEncInfo;
> -import org.apache.openejb.assembler.classic.PersistenceContextReferenceInfo;
> -import org.apache.openejb.assembler.classic.PersistenceUnitReferenceInfo;
> -import org.apache.openejb.assembler.classic.PortRefInfo;
> -import org.apache.openejb.assembler.classic.ReferenceLocationInfo;
> -import org.apache.openejb.assembler.classic.ResourceEnvReferenceInfo;
> -import org.apache.openejb.assembler.classic.ResourceReferenceInfo;
> -import org.apache.openejb.assembler.classic.ServiceReferenceInfo;
> -import org.apache.openejb.assembler.classic.EjbResolver;
> -import org.apache.openejb.assembler.classic.EjbJarInfo;
> -import org.apache.openejb.jee.EjbLocalRef;
> -import org.apache.openejb.jee.EnvEntry;
> -import org.apache.openejb.jee.Injectable;
> -import org.apache.openejb.jee.InjectionTarget;
> -import org.apache.openejb.jee.JndiConsumer;
> -import org.apache.openejb.jee.JndiReference;
> -import org.apache.openejb.jee.MessageDestinationRef;
> -import org.apache.openejb.jee.PersistenceContextRef;
> -import org.apache.openejb.jee.PersistenceContextType;
> -import org.apache.openejb.jee.PersistenceUnitRef;
> -import org.apache.openejb.jee.PortComponentRef;
> -import org.apache.openejb.jee.Property;
> -import org.apache.openejb.jee.ResAuth;
> -import org.apache.openejb.jee.ResourceEnvRef;
> -import org.apache.openejb.jee.ResourceRef;
> -import org.apache.openejb.jee.ServiceRef;
> -import org.apache.openejb.jee.EjbReference;
> -import org.apache.openejb.jee.SessionBean;
> -import org.apache.openejb.jee.EnterpriseBean;
> import org.apache.openejb.util.LogCategory;
> import org.apache.openejb.util.Logger;
> import org.apache.openejb.util.Messages;
> @@ -132,6 +98,22 @@ public class JndiEncInfoBuilder {
>
> buildServiceRefInfos(jndiConsumer, moduleJndiEnc, compJndiEnc);
>
> + buildRepositoryRefInfos(jndiConsumer, compJndiEnc);
> +
> + }
> +
> + private void buildRepositoryRefInfos(JndiConsumer jndiConsumer,
> JndiEncInfo comp) {
> + for (RepositoryRef repoRef : jndiConsumer.getRepositoryRef()) {
> + RepositoryReferenceInfo info = new RepositoryReferenceInfo();
> + info.repository = repoRef.getRepository();
> + info.referenceName = repoRef.getName();
> + if (!info.referenceName.startsWith("java:")) {
> + info.referenceName = "comp/env/" + info.referenceName;
> + }
> + info.targets.addAll(buildInjectionInfos(repoRef));
> +
> + comp.repositoryRefs.add(info);
> + }
> }
>
> private void buildEjbRefs(JndiConsumer jndiConsumer, URI moduleUri,
> String moduleId, String ejbName, JndiEncInfo moduleJndiEnc, JndiEncInfo
> compJndiEnc) throws OpenEJBException {
>
> Modified:
> openejb/trunk/openejb3/container/openejb-jee/src/main/java/org/apache/openejb/jee/Application.java
> URL:
> http://svn.apache.org/viewvc/openejb/trunk/openejb3/container/openejb-jee/src/main/java/org/apache/openejb/jee/Application.java?rev=1152756&r1=1152755&r2=1152756&view=diff
> ==============================================================================
> ---
> openejb/trunk/openejb3/container/openejb-jee/src/main/java/org/apache/openejb/jee/Application.java
> (original)
> +++
> openejb/trunk/openejb3/container/openejb-jee/src/main/java/org/apache/openejb/jee/Application.java
> Mon Aug 1 13:13:52 2011
> @@ -147,6 +147,9 @@ public class Application implements Jndi
> @XmlSchemaType(name = "ID")
> protected java.lang.String id;
>
> + @XmlTransient
> + protected KeyedCollection<String, RepositoryRef> repositoryRefs;
> +
> public Application() {
> }
>
> @@ -418,4 +421,19 @@ public class Application implements Jndi
> this.id = value;
> }
>
> + @Override
> + public Collection<RepositoryRef> getRepositoryRef() {
> + if (repositoryRefs == null) {
> + repositoryRefs = new KeyedCollection<String,RepositoryRef>();
> + }
> + return repositoryRefs;
> + }
> +
> + @Override
> + public Map<String, RepositoryRef> getRepositoryRefMap() {
> + if (repositoryRefs == null) {
> + repositoryRefs = new KeyedCollection<String,RepositoryRef>();
> + }
> + return repositoryRefs.toMap();
> + }
> }
>
> Modified:
> openejb/trunk/openejb3/container/openejb-jee/src/main/java/org/apache/openejb/jee/ApplicationClient.java
> URL:
> http://svn.apache.org/viewvc/openejb/trunk/openejb3/container/openejb-jee/src/main/java/org/apache/openejb/jee/ApplicationClient.java?rev=1152756&r1=1152755&r2=1152756&view=diff
> ==============================================================================
> ---
> openejb/trunk/openejb3/container/openejb-jee/src/main/java/org/apache/openejb/jee/ApplicationClient.java
> (original)
> +++
> openejb/trunk/openejb3/container/openejb-jee/src/main/java/org/apache/openejb/jee/ApplicationClient.java
> Mon Aug 1 13:13:52 2011
> @@ -147,6 +147,9 @@ public class ApplicationClient implement
> @XmlTransient
> protected String mainClass;
>
> + @XmlTransient
> + protected KeyedCollection<String, RepositoryRef> repositoryRefs;
> +
> public ApplicationClient() {
> }
>
> @@ -425,4 +428,19 @@ public class ApplicationClient implement
> this.mainClass = mainClass;
> }
>
> + @Override
> + public Collection<RepositoryRef> getRepositoryRef() {
> + if (repositoryRefs == null) {
> + repositoryRefs = new KeyedCollection<String,RepositoryRef>();
> + }
> + return repositoryRefs;
> + }
> +
> + @Override
> + public Map<String, RepositoryRef> getRepositoryRefMap() {
> + if (repositoryRefs == null) {
> + repositoryRefs = new KeyedCollection<String,RepositoryRef>();
> + }
> + return repositoryRefs.toMap();
> + }
> }
>
> Modified:
> openejb/trunk/openejb3/container/openejb-jee/src/main/java/org/apache/openejb/jee/EntityBean.java
> URL:
> http://svn.apache.org/viewvc/openejb/trunk/openejb3/container/openejb-jee/src/main/java/org/apache/openejb/jee/EntityBean.java?rev=1152756&r1=1152755&r2=1152756&view=diff
> ==============================================================================
> ---
> openejb/trunk/openejb3/container/openejb-jee/src/main/java/org/apache/openejb/jee/EntityBean.java
> (original)
> +++
> openejb/trunk/openejb3/container/openejb-jee/src/main/java/org/apache/openejb/jee/EntityBean.java
> Mon Aug 1 13:13:52 2011
> @@ -180,6 +180,9 @@ public class EntityBean implements Remot
> @XmlID
> protected String id;
>
> + @XmlTransient
> + protected KeyedCollection<String, RepositoryRef> repositoryRefs;
> +
> public EntityBean() {
> Set<String> publicIds = JaxbJavaee.currentPublicId.get();
> if (publicIds != null && publicIds.contains("-//Sun Microsystems,
> Inc.//DTD Enterprise JavaBeans 1.1//EN")) {
> @@ -603,4 +606,19 @@ public class EntityBean implements Remot
> public void setTransactionType(TransactionType type){
> }
>
> + @Override
> + public Collection<RepositoryRef> getRepositoryRef() {
> + if (repositoryRefs == null) {
> + repositoryRefs = new KeyedCollection<String,RepositoryRef>();
> + }
> + return repositoryRefs;
> + }
> +
> + @Override
> + public Map<String, RepositoryRef> getRepositoryRefMap() {
> + if (repositoryRefs == null) {
> + repositoryRefs = new KeyedCollection<String,RepositoryRef>();
> + }
> + return repositoryRefs.toMap();
> + }
> }
>
> Modified:
> openejb/trunk/openejb3/container/openejb-jee/src/main/java/org/apache/openejb/jee/Interceptor.java
> URL:
> http://svn.apache.org/viewvc/openejb/trunk/openejb3/container/openejb-jee/src/main/java/org/apache/openejb/jee/Interceptor.java?rev=1152756&r1=1152755&r2=1152756&view=diff
> ==============================================================================
> ---
> openejb/trunk/openejb3/container/openejb-jee/src/main/java/org/apache/openejb/jee/Interceptor.java
> (original)
> +++
> openejb/trunk/openejb3/container/openejb-jee/src/main/java/org/apache/openejb/jee/Interceptor.java
> Mon Aug 1 13:13:52 2011
> @@ -133,6 +133,8 @@ public class Interceptor implements Jndi
> @XmlID
> protected String id;
>
> + protected KeyedCollection<String, RepositoryRef> repositoryRefs;
> +
> public Interceptor() {
> }
>
> @@ -333,6 +335,22 @@ public class Interceptor implements Jndi
> return this.dataSource.toMap();
> }
>
> + @Override
> + public Collection<RepositoryRef> getRepositoryRef() {
> + if (repositoryRefs == null) {
> + repositoryRefs = new KeyedCollection<String,RepositoryRef>();
> + }
> + return repositoryRefs;
> + }
> +
> + @Override
> + public Map<String, RepositoryRef> getRepositoryRefMap() {
> + if (repositoryRefs == null) {
> + repositoryRefs = new KeyedCollection<String,RepositoryRef>();
> + }
> + return repositoryRefs.toMap();
> + }
> +
> public List<LifecycleCallback> getPostConstruct() {
> if (postConstruct == null) {
> postConstruct = new ArrayList<LifecycleCallback>();
> @@ -437,4 +455,6 @@ public class Interceptor implements Jndi
> assert interceptorClass != null : "Set the interceptorClass before
> calling this method";
> getAroundTimeout().add(new AroundTimeout(interceptorClass, method));
> }
> +
> +
> }
>
> Modified:
> openejb/trunk/openejb3/container/openejb-jee/src/main/java/org/apache/openejb/jee/JndiConsumer.java
> URL:
> http://svn.apache.org/viewvc/openejb/trunk/openejb3/container/openejb-jee/src/main/java/org/apache/openejb/jee/JndiConsumer.java?rev=1152756&r1=1152755&r2=1152756&view=diff
> ==============================================================================
> ---
> openejb/trunk/openejb3/container/openejb-jee/src/main/java/org/apache/openejb/jee/JndiConsumer.java
> (original)
> +++
> openejb/trunk/openejb3/container/openejb-jee/src/main/java/org/apache/openejb/jee/JndiConsumer.java
> Mon Aug 1 13:13:52 2011
> @@ -60,4 +60,7 @@ public interface JndiConsumer {
>
> Collection<DataSource> getDataSource();
> Map<String,DataSource> getDataSourceMap();
> +
> + Collection<RepositoryRef> getRepositoryRef();
> + Map<String, RepositoryRef> getRepositoryRefMap();
> }
>
> Modified:
> openejb/trunk/openejb3/container/openejb-jee/src/main/java/org/apache/openejb/jee/MessageDrivenBean.java
> URL:
> http://svn.apache.org/viewvc/openejb/trunk/openejb3/container/openejb-jee/src/main/java/org/apache/openejb/jee/MessageDrivenBean.java?rev=1152756&r1=1152755&r2=1152756&view=diff
> ==============================================================================
> ---
> openejb/trunk/openejb3/container/openejb-jee/src/main/java/org/apache/openejb/jee/MessageDrivenBean.java
> (original)
> +++
> openejb/trunk/openejb3/container/openejb-jee/src/main/java/org/apache/openejb/jee/MessageDrivenBean.java
> Mon Aug 1 13:13:52 2011
> @@ -170,6 +170,9 @@ public class MessageDrivenBean implement
> @XmlID
> protected String id;
>
> + @XmlTransient
> + protected KeyedCollection<String, RepositoryRef> repositoryRefs;
> +
> public MessageDrivenBean() {
> }
>
> @@ -619,4 +622,20 @@ public class MessageDrivenBean implement
> public String getTimerConsumerName() {
> return ejbName;
> }
> +
> + @Override
> + public Collection<RepositoryRef> getRepositoryRef() {
> + if (repositoryRefs == null) {
> + repositoryRefs = new KeyedCollection<String,RepositoryRef>();
> + }
> + return repositoryRefs;
> + }
> +
> + @Override
> + public Map<String, RepositoryRef> getRepositoryRefMap() {
> + if (repositoryRefs == null) {
> + repositoryRefs = new KeyedCollection<String,RepositoryRef>();
> + }
> + return repositoryRefs.toMap();
> + }
> }
>
> Added:
> openejb/trunk/openejb3/container/openejb-jee/src/main/java/org/apache/openejb/jee/RepositoryRef.java
> URL:
> http://svn.apache.org/viewvc/openejb/trunk/openejb3/container/openejb-jee/src/main/java/org/apache/openejb/jee/RepositoryRef.java?rev=1152756&view=auto
> ==============================================================================
> ---
> openejb/trunk/openejb3/container/openejb-jee/src/main/java/org/apache/openejb/jee/RepositoryRef.java
> (added)
> +++
> openejb/trunk/openejb3/container/openejb-jee/src/main/java/org/apache/openejb/jee/RepositoryRef.java
> Mon Aug 1 13:13:52 2011
> @@ -0,0 +1,90 @@
> +/**
> + *
> + * Licensed to the Apache Software Foundation (ASF) under one or more
> + * contributor license agreements. See the NOTICE file distributed with
> + * this work for additional information regarding copyright ownership.
> + * The ASF licenses this file to You under the Apache License, Version 2.0
> + * (the "License"); you may not use this file except in compliance with
> + * the License. You may obtain a copy of the License at
> + *
> + * http://www.apache.org/licenses/LICENSE-2.0
> + *
> + * Unless required by applicable law or agreed to in writing, software
> + * distributed under the License is distributed on an "AS IS" BASIS,
> + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
> + * See the License for the specific language governing permissions and
> + * limitations under the License.
> + */
> +
> +package org.apache.openejb.jee;
> +
> +import javax.xml.bind.annotation.*;
> +import javax.xml.bind.annotation.adapters.CollapsedStringAdapter;
> +import javax.xml.bind.annotation.adapters.XmlJavaTypeAdapter;
> +import java.util.ArrayList;
> +import java.util.List;
> +
> +public class RepositoryRef implements JndiReference {
> + protected List<InjectionTarget> injectionTarget;
> + protected String repository;
> + protected String name;
> + protected String lookup;
> +
> + public RepositoryRef() {
> + }
> +
> + public RepositoryRef(String repositoryName) {
> + this.repository = repositoryName;
> + }
> +
> + public List<InjectionTarget> getInjectionTarget() {
> + if (injectionTarget == null) {
> + injectionTarget = new ArrayList<InjectionTarget>();
> + }
> + return this.injectionTarget;
> + }
> +
> + public String getRepository() {
> + return repository;
> + }
> +
> + public void setRepository(String repository) {
> + this.repository = repository;
> + }
> +
> + public String getLookupName() {
> + return lookup;
> + }
> +
> + public String getName() {
> + return name;
> + }
> +
> + public void setName(String name) {
> + this.name = name;
> + }
> +
> + public String getType() {
> + return repository;
> + }
> +
> + public void setType(String type) {
> + repository = type;
> + }
> +
> + public String getMappedName() {
> + return null;
> + }
> +
> + public void setMappedName(String mappedName) {
> + // no-op
> + }
> +
> + public void setLookupName(String lookupName) {
> + lookup = lookupName;
> + }
> +
> + @Override public String getKey() {
> + return "java:openejb/Repository/" + repository;
> + }
> +}
>
> Modified:
> openejb/trunk/openejb3/container/openejb-jee/src/main/java/org/apache/openejb/jee/SessionBean.java
> URL:
> http://svn.apache.org/viewvc/openejb/trunk/openejb3/container/openejb-jee/src/main/java/org/apache/openejb/jee/SessionBean.java?rev=1152756&r1=1152755&r2=1152756&view=diff
> ==============================================================================
> ---
> openejb/trunk/openejb3/container/openejb-jee/src/main/java/org/apache/openejb/jee/SessionBean.java
> (original)
> +++
> openejb/trunk/openejb3/container/openejb-jee/src/main/java/org/apache/openejb/jee/SessionBean.java
> Mon Aug 1 13:13:52 2011
> @@ -256,6 +256,9 @@ public class SessionBean implements Remo
> @XmlTransient
> private boolean restService = false;
>
> + @XmlTransient
> + protected KeyedCollection<String, RepositoryRef> repositoryRefs;
> +
> public SessionBean() {
> }
>
> @@ -895,4 +898,20 @@ public class SessionBean implements Remo
> public void setRestService(boolean restService) {
> this.restService = restService;
> }
> +
> + @Override
> + public Collection<RepositoryRef> getRepositoryRef() {
> + if (repositoryRefs == null) {
> + repositoryRefs = new KeyedCollection<String,RepositoryRef>();
> + }
> + return repositoryRefs;
> + }
> +
> + @Override
> + public Map<String, RepositoryRef> getRepositoryRefMap() {
> + if (repositoryRefs == null) {
> + repositoryRefs = new KeyedCollection<String,RepositoryRef>();
> + }
> + return repositoryRefs.toMap();
> + }
> }
>
> Modified:
> openejb/trunk/openejb3/container/openejb-jee/src/main/java/org/apache/openejb/jee/WebApp.java
> URL:
> http://svn.apache.org/viewvc/openejb/trunk/openejb3/container/openejb-jee/src/main/java/org/apache/openejb/jee/WebApp.java?rev=1152756&r1=1152755&r2=1152756&view=diff
> ==============================================================================
> ---
> openejb/trunk/openejb3/container/openejb-jee/src/main/java/org/apache/openejb/jee/WebApp.java
> (original)
> +++
> openejb/trunk/openejb3/container/openejb-jee/src/main/java/org/apache/openejb/jee/WebApp.java
> Mon Aug 1 13:13:52 2011
> @@ -186,7 +186,8 @@ public class WebApp implements WebCommon
> @XmlJavaTypeAdapter(CollapsedStringAdapter.class)
> protected String version = "3.0";
>
> -
> + @XmlTransient
> + protected KeyedCollection<String, RepositoryRef> repositoryRefs;
>
>
> @Override
> @@ -587,6 +588,22 @@ public class WebApp implements WebCommon
> return this.dataSource.toMap();
> }
>
> + @Override
> + public Collection<RepositoryRef> getRepositoryRef() {
> + if (repositoryRefs == null) {
> + repositoryRefs = new KeyedCollection<String,RepositoryRef>();
> + }
> + return repositoryRefs;
> + }
> +
> + @Override
> + public Map<String, RepositoryRef> getRepositoryRefMap() {
> + if (repositoryRefs == null) {
> + repositoryRefs = new KeyedCollection<String,RepositoryRef>();
> + }
> + return repositoryRefs.toMap();
> + }
> +
> public AbsoluteOrdering getAbsoluteOrdering() {
> return absoluteOrdering;
> }
>
> Modified:
> openejb/trunk/openejb3/container/openejb-jee/src/main/java/org/apache/openejb/jee/WebFragment.java
> URL:
> http://svn.apache.org/viewvc/openejb/trunk/openejb3/container/openejb-jee/src/main/java/org/apache/openejb/jee/WebFragment.java?rev=1152756&r1=1152755&r2=1152756&view=diff
> ==============================================================================
> ---
> openejb/trunk/openejb3/container/openejb-jee/src/main/java/org/apache/openejb/jee/WebFragment.java
> (original)
> +++
> openejb/trunk/openejb3/container/openejb-jee/src/main/java/org/apache/openejb/jee/WebFragment.java
> Mon Aug 1 13:13:52 2011
> @@ -185,7 +185,8 @@ public class WebFragment implements WebC
> @XmlJavaTypeAdapter(CollapsedStringAdapter.class)
> protected String version;
>
> -
> + @XmlTransient
> + protected KeyedCollection<String, RepositoryRef> repositoryRefs;
>
>
> @Override
> @@ -613,4 +614,15 @@ public class WebFragment implements WebC
> public void setName(String name) {
> this.name = name;
> }
> +
> + @Override
> + public Collection<RepositoryRef> getRepositoryRef() {
> + return repositoryRefs;
> + }
> +
> + @Override
> + public Map<String, RepositoryRef> getRepositoryRefMap() {
> + return repositoryRefs.toMap();
> + }
> +
> }
> \ No newline at end of file
>
>
>