| /* |
| * Copyright 2007-2009 Niclas Hedhman. |
| * Copyright 2008 Alin Dreghiciu. |
| * |
| * Licensed 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.qi4j.runtime.query; |
| |
| import org.qi4j.api.query.NotQueryableException; |
| import org.qi4j.api.query.QueryBuilder; |
| import org.qi4j.api.query.QueryBuilderFactory; |
| import org.qi4j.api.service.NoSuchServiceException; |
| import org.qi4j.api.service.ServiceFinder; |
| import org.qi4j.api.service.ServiceReference; |
| import org.qi4j.api.util.NullArgumentException; |
| import org.qi4j.spi.query.EntityFinder; |
| |
| /** |
| * Default implementation of {@link QueryBuilderFactory} |
| */ |
| public final class QueryBuilderFactoryImpl |
| implements QueryBuilderFactory |
| { |
| private ServiceFinder finder; |
| |
| /** |
| * Constructor. |
| * |
| * @param finder The ServiceFinder of the Module this QueryBuilderFactory belongs to. |
| */ |
| public QueryBuilderFactoryImpl( ServiceFinder finder ) |
| { |
| NullArgumentException.validateNotNull( "ServiceFinder", finder ); |
| this.finder = finder; |
| } |
| |
| /** |
| * @see QueryBuilderFactory#newQueryBuilder(Class) |
| */ |
| @Override |
| public <T> QueryBuilder<T> newQueryBuilder( final Class<T> resultType ) |
| { |
| NotQueryableException.throwIfNotQueryable( resultType ); |
| |
| final ServiceReference<EntityFinder> serviceReference; |
| try |
| { |
| serviceReference = finder.findService( EntityFinder.class ); |
| return new QueryBuilderImpl<T>( serviceReference.get(), resultType, null ); |
| } |
| catch( NoSuchServiceException e ) |
| { |
| return new QueryBuilderImpl<T>( null, resultType, null ); |
| } |
| } |
| } |