2 * Copyright (C) 2007-2012 Argeo GmbH
4 * Licensed under the Apache License, Version 2.0 (the "License");
5 * you may not use this file except in compliance with the License.
6 * You may obtain a copy of the License at
8 * http://www.apache.org/licenses/LICENSE-2.0
10 * Unless required by applicable law or agreed to in writing, software
11 * distributed under the License is distributed on an "AS IS" BASIS,
12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 * See the License for the specific language governing permissions and
14 * limitations under the License.
16 package org
.argeo
.jcr
;
19 import java
.net
.URISyntaxException
;
21 import java
.util
.Properties
;
23 import javax
.jcr
.Repository
;
24 import javax
.jcr
.RepositoryException
;
25 import javax
.jcr
.RepositoryFactory
;
28 * Simple implementation of {@link RepositoryFactory}, supporting OSGi aliases.
31 public class DefaultRepositoryFactory
extends DefaultRepositoryRegister
32 implements RepositoryFactory
, ArgeoJcrConstants
{
33 @SuppressWarnings("rawtypes")
34 public Repository
getRepository(Map parameters
) throws RepositoryException
{
35 if (parameters
.containsKey(JCR_REPOSITORY_ALIAS
)) {
36 String alias
= parameters
.get(JCR_REPOSITORY_ALIAS
).toString();
37 return getRepositoryByAlias(alias
);
38 } else if (parameters
.containsKey(JCR_REPOSITORY_URI
)) {
39 String uri
= parameters
.get(JCR_REPOSITORY_URI
).toString();
40 return getRepositoryByAlias(getAliasFromURI(uri
));
45 protected String
getAliasFromURI(String uri
) {
47 URI uriObj
= new URI(uri
);
48 String alias
= uriObj
.getPath();
49 if (alias
.charAt(0) == '/')
50 alias
= alias
.substring(1);
51 if (alias
.charAt(alias
.length() - 1) == '/')
52 alias
= alias
.substring(0, alias
.length() - 1);
54 } catch (URISyntaxException e
) {
55 throw new ArgeoJcrException("Cannot interpret URI " + uri
, e
);
60 * Retrieve a repository by alias
62 * @return the repository registered with alias or null if none
64 protected Repository
getRepositoryByAlias(String alias
) {
65 if (getRepositories().containsKey(alias
))
66 return getRepositories().get(alias
);
71 protected void publish(String alias
, Repository repository
,
72 Properties properties
) {
73 register(repository
, properties
);