diff options
Diffstat (limited to 'archiva-modules/metadata/metadata-repository-api')
3 files changed, 120 insertions, 1 deletions
diff --git a/archiva-modules/metadata/metadata-repository-api/src/main/java/org/apache/archiva/metadata/repository/RepositorySessionFactoryBean.java b/archiva-modules/metadata/metadata-repository-api/src/main/java/org/apache/archiva/metadata/repository/RepositorySessionFactoryBean.java new file mode 100644 index 000000000..e182104f1 --- /dev/null +++ b/archiva-modules/metadata/metadata-repository-api/src/main/java/org/apache/archiva/metadata/repository/RepositorySessionFactoryBean.java @@ -0,0 +1,91 @@ +package org.apache.archiva.metadata.repository; + +/* + * 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. + */ + +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.config.AbstractFactoryBean; + +import java.util.Properties; + +/** + * @author Olivier Lamy + * @since 2.0.2 + */ +public class RepositorySessionFactoryBean + extends AbstractFactoryBean<RepositorySessionFactory> +{ + + private Logger logger = LoggerFactory.getLogger( getClass() ); + + private static final String BEAN_ID_SYS_PROPS = "archiva.repositorySessionFactory.id"; + + private Properties properties; + + private String id; + + public RepositorySessionFactoryBean( Properties properties ) + { + this.properties = properties; + // we can override with system props + String value = System.getProperty( BEAN_ID_SYS_PROPS ); + if ( value != null ) + { + this.properties.put( BEAN_ID_SYS_PROPS, value ); + } + id = properties.getProperty( BEAN_ID_SYS_PROPS ); + } + + @Override + public Class<RepositorySessionFactory> getObjectType() + { + return RepositorySessionFactory.class; + } + + @Override + protected RepositorySessionFactory createInstance() + throws Exception + { + RepositorySessionFactory repositorySessionFactory = + getBeanFactory().getBean( "repositorySessionFactory#" + id, RepositorySessionFactory.class ); + logger.info( "create RepositorySessionFactory instance of {}", repositorySessionFactory.getClass().getName() ); + return repositorySessionFactory; + } + + public String getId() + { + return id; + } + + public void setId( String id ) + { + this.id = id; + } + + public Properties getProperties() + { + return properties; + } + + public void setProperties( Properties properties ) + { + this.properties = properties; + } +} diff --git a/archiva-modules/metadata/metadata-repository-api/src/main/resources/META-INF/spring-context.xml b/archiva-modules/metadata/metadata-repository-api/src/main/resources/META-INF/spring-context.xml index 6e1dc2489..e7c511811 100644 --- a/archiva-modules/metadata/metadata-repository-api/src/main/resources/META-INF/spring-context.xml +++ b/archiva-modules/metadata/metadata-repository-api/src/main/resources/META-INF/spring-context.xml @@ -21,14 +21,22 @@ <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:context="http://www.springframework.org/schema/context" + xmlns:util="http://www.springframework.org/schema/util" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd http://www.springframework.org/schema/context - http://www.springframework.org/schema/context/spring-context-3.0.xsd" + http://www.springframework.org/schema/context/spring-context-3.0.xsd + http://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util.xsd" default-lazy-init="true"> <context:annotation-config/> <context:component-scan base-package="org.apache.archiva.metadata.repository"/> + <!-- so can be override with -Darchiva.repositorySessionFactory.id= jcr or cassandra or file --> + <bean name="repositorySessionFactory" class="org.apache.archiva.metadata.repository.RepositorySessionFactoryBean"> + <constructor-arg> + <util:properties location="classpath:archiva-runtime.properties" local-override="true"/> + </constructor-arg> + </bean> </beans>
\ No newline at end of file diff --git a/archiva-modules/metadata/metadata-repository-api/src/main/resources/archiva-runtime.properties b/archiva-modules/metadata/metadata-repository-api/src/main/resources/archiva-runtime.properties new file mode 100644 index 000000000..d41614e69 --- /dev/null +++ b/archiva-modules/metadata/metadata-repository-api/src/main/resources/archiva-runtime.properties @@ -0,0 +1,20 @@ +# +# 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. +# +#default value +archiva.repositorySessionFactory.id=jcr
\ No newline at end of file |