http://git-wip-us.apache.org/repos/asf/zest-java/blob/8744a67f/core/api/src/main/java/org/qi4j/api/service/ServiceImporter.java ---------------------------------------------------------------------- diff --git a/core/api/src/main/java/org/qi4j/api/service/ServiceImporter.java b/core/api/src/main/java/org/qi4j/api/service/ServiceImporter.java deleted file mode 100644 index ee3d6e5..0000000 --- a/core/api/src/main/java/org/qi4j/api/service/ServiceImporter.java +++ /dev/null @@ -1,42 +0,0 @@ -/* - * Copyright (c) 2007, Rickard Ãberg. All Rights Reserved. - * - * 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.api.service; - -/** - * Import a service from some external source. - */ -public interface ServiceImporter<T> -{ - /** - * Imports an instance of the service type described in the service descriptor. - * - * @param serviceDescriptor The service descriptor. - * - * @return The imported service instance. - * - * @throws ServiceImporterException if import failed. - */ - T importService( ImportedServiceDescriptor serviceDescriptor ) - throws ServiceImporterException; - - /** - * Ask if the service is available or not. - * - * @param instance the instance to be checked - * - * @return true if the service is available, false if not - */ - boolean isAvailable( T instance ); -}
http://git-wip-us.apache.org/repos/asf/zest-java/blob/8744a67f/core/api/src/main/java/org/qi4j/api/service/ServiceImporterException.java ---------------------------------------------------------------------- diff --git a/core/api/src/main/java/org/qi4j/api/service/ServiceImporterException.java b/core/api/src/main/java/org/qi4j/api/service/ServiceImporterException.java deleted file mode 100644 index c8c8fc7..0000000 --- a/core/api/src/main/java/org/qi4j/api/service/ServiceImporterException.java +++ /dev/null @@ -1,42 +0,0 @@ -/* - * Copyright (c) 2007, Rickard Ãberg. All Rights Reserved. - * - * 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.api.service; - -/** - * If a ServiceImporter could not import a service - * instance it must throw this exception. - */ -public class ServiceImporterException - extends RuntimeException -{ - public ServiceImporterException() - { - } - - public ServiceImporterException( String string ) - { - super( string ); - } - - public ServiceImporterException( String string, Throwable throwable ) - { - super( string, throwable ); - } - - public ServiceImporterException( Throwable throwable ) - { - super( throwable ); - } -} http://git-wip-us.apache.org/repos/asf/zest-java/blob/8744a67f/core/api/src/main/java/org/qi4j/api/service/ServiceReference.java ---------------------------------------------------------------------- diff --git a/core/api/src/main/java/org/qi4j/api/service/ServiceReference.java b/core/api/src/main/java/org/qi4j/api/service/ServiceReference.java deleted file mode 100644 index 7c616c2..0000000 --- a/core/api/src/main/java/org/qi4j/api/service/ServiceReference.java +++ /dev/null @@ -1,47 +0,0 @@ -/* - * Copyright (c) 2008, Rickard Ãberg. All Rights Reserved. - * - * 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.api.service; - -import org.qi4j.api.activation.ActivationEventListenerRegistration; -import org.qi4j.api.structure.MetaInfoHolder; -import org.qi4j.api.type.HasTypes; - -/** - * From a ServiceReference you can access and modify metadata about a service. - * You can also access the actual service through get(), that can then be invoked. - */ -public interface ServiceReference<T> - extends HasTypes, ActivationEventListenerRegistration, MetaInfoHolder -{ - /** - * @return the service's identity - */ - String identity(); - - /** - * @return the actual service - */ - T get(); - - /** - * @return TRUE if the service is active, otherwise return FALSE - */ - boolean isActive(); - - /** - * @return TRUE if the service is available, otherwise return FALSE - */ - boolean isAvailable(); -} http://git-wip-us.apache.org/repos/asf/zest-java/blob/8744a67f/core/api/src/main/java/org/qi4j/api/service/ServiceUnavailableException.java ---------------------------------------------------------------------- diff --git a/core/api/src/main/java/org/qi4j/api/service/ServiceUnavailableException.java b/core/api/src/main/java/org/qi4j/api/service/ServiceUnavailableException.java deleted file mode 100644 index 465c945..0000000 --- a/core/api/src/main/java/org/qi4j/api/service/ServiceUnavailableException.java +++ /dev/null @@ -1,35 +0,0 @@ -/* - * Copyright 2008 Niclas Hedhman. - * - * 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.api.service; - -/** - * Thrown when no available service is found. - */ -public class ServiceUnavailableException - extends RuntimeException -{ - public ServiceUnavailableException( String message ) - { - super( message ); - } - - public ServiceUnavailableException( String message, Throwable cause ) - { - super( message, cause ); - } -} http://git-wip-us.apache.org/repos/asf/zest-java/blob/8744a67f/core/api/src/main/java/org/qi4j/api/service/importer/InstanceImporter.java ---------------------------------------------------------------------- diff --git a/core/api/src/main/java/org/qi4j/api/service/importer/InstanceImporter.java b/core/api/src/main/java/org/qi4j/api/service/importer/InstanceImporter.java deleted file mode 100644 index 38901fb..0000000 --- a/core/api/src/main/java/org/qi4j/api/service/importer/InstanceImporter.java +++ /dev/null @@ -1,80 +0,0 @@ -/* - * Copyright (c) 2008, Rickard Ãberg. All Rights Reserved. - * - * 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.api.service.importer; - -import org.qi4j.api.injection.scope.Structure; -import org.qi4j.api.service.ImportedServiceDescriptor; -import org.qi4j.api.service.ServiceImporter; -import org.qi4j.api.service.ServiceImporterException; -import org.qi4j.api.structure.Application; -import org.qi4j.api.structure.Layer; -import org.qi4j.api.structure.MetaInfoHolder; -import org.qi4j.api.structure.Module; -import org.qi4j.functional.Function; -import org.qi4j.functional.Iterables; - -import static org.qi4j.functional.Iterables.filter; -import static org.qi4j.functional.Iterables.first; -import static org.qi4j.functional.Iterables.map; -import static org.qi4j.functional.Specifications.notNull; - -/** - * Return a predefined service instance that was provided as meta-info. Search for meta-info in the following order: - * the service itself, the module of the service, the layer of the service, the whole application. - */ -public final class InstanceImporter<T> - implements ServiceImporter<T> -{ - @Structure - private Application application; - - @Structure - private Layer layer; - - @Structure - private Module module; - - @Override - public T importService( final ImportedServiceDescriptor serviceDescriptor ) - throws ServiceImporterException - { - T instance = null; - Iterable<MetaInfoHolder> holders = Iterables.iterable( serviceDescriptor, module, layer, application ); - for( final MetaInfoHolder metaInfoHolder : holders ) - { - Function<Class<?>, T> metaFinder = new Function<Class<?>, T>() - { - @Override - @SuppressWarnings( "unchecked" ) - public T map( Class<?> type ) - { - return (T) metaInfoHolder.metaInfo( type ); - } - }; - instance = first( filter( notNull(), map( metaFinder, serviceDescriptor.types() ) ) ); - if( instance != null ) - { - break; - } - } - return instance; - } - - @Override - public boolean isAvailable( T instance ) - { - return true; - } -} http://git-wip-us.apache.org/repos/asf/zest-java/blob/8744a67f/core/api/src/main/java/org/qi4j/api/service/importer/NewObjectImporter.java ---------------------------------------------------------------------- diff --git a/core/api/src/main/java/org/qi4j/api/service/importer/NewObjectImporter.java b/core/api/src/main/java/org/qi4j/api/service/importer/NewObjectImporter.java deleted file mode 100644 index d29b1ce..0000000 --- a/core/api/src/main/java/org/qi4j/api/service/importer/NewObjectImporter.java +++ /dev/null @@ -1,46 +0,0 @@ -/* - * Copyright (c) 2009, Rickard Ãberg. All Rights Reserved. - * - * 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.api.service.importer; - -import org.qi4j.api.injection.scope.Structure; -import org.qi4j.api.object.ObjectFactory; -import org.qi4j.api.service.ImportedServiceDescriptor; -import org.qi4j.api.service.ServiceImporter; -import org.qi4j.api.service.ServiceImporterException; -import org.qi4j.functional.Iterables; - -/** - * Import Services using a new registered Object instance. - */ -public final class NewObjectImporter<T> - implements ServiceImporter<T> -{ - @Structure - private ObjectFactory obf; - - @Override - @SuppressWarnings( "unchecked" ) - public T importService( ImportedServiceDescriptor serviceDescriptor ) - throws ServiceImporterException - { - return obf.newObject( (Class<T>) Iterables.first( serviceDescriptor.types() ) ); - } - - @Override - public boolean isAvailable( T instance ) - { - return true; - } -} \ No newline at end of file http://git-wip-us.apache.org/repos/asf/zest-java/blob/8744a67f/core/api/src/main/java/org/qi4j/api/service/importer/ServiceInstanceImporter.java ---------------------------------------------------------------------- diff --git a/core/api/src/main/java/org/qi4j/api/service/importer/ServiceInstanceImporter.java b/core/api/src/main/java/org/qi4j/api/service/importer/ServiceInstanceImporter.java deleted file mode 100644 index 7910228..0000000 --- a/core/api/src/main/java/org/qi4j/api/service/importer/ServiceInstanceImporter.java +++ /dev/null @@ -1,80 +0,0 @@ -/* - * Copyright (c) 2010, Rickard Ãberg. All Rights Reserved. - * - * 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.api.service.importer; - -import org.qi4j.api.injection.scope.Structure; -import org.qi4j.api.service.ImportedServiceDescriptor; -import org.qi4j.api.service.ServiceFinder; -import org.qi4j.api.service.ServiceImporter; -import org.qi4j.api.service.ServiceImporterException; -import org.qi4j.api.service.ServiceReference; - -/** - * Use a registered service that implements ServiceImporter to do the actual - * import. The service id of the service that this importer should delegate to must - * be set as meta-info on this service. Example: - * <pre><code> - * module.services(MyServiceImporterService.class).identifiedBy("someid"); - * module.importedServices(OtherService.class).importedBy(ServiceInstanceImporter.class).setMetaInfo("someid"); - * </code></pre> - */ -public class ServiceInstanceImporter<T> - implements ServiceImporter<T> -{ - @Structure - ServiceFinder finder; - - ServiceImporter<T> service; - - String serviceId; - - @Override - public T importService( ImportedServiceDescriptor importedServiceDescriptor ) - throws ServiceImporterException - { - serviceId = importedServiceDescriptor.metaInfo( String.class ); - - return serviceImporter().importService( importedServiceDescriptor ); - } - - @Override - public boolean isAvailable( T instance ) - { - return serviceImporter().isAvailable( instance ); - } - - @SuppressWarnings( {"raw", "unchecked"} ) - private ServiceImporter<T> serviceImporter() - { - if( service == null ) - { - for( ServiceReference<ServiceImporter> reference : finder.<ServiceImporter>findServices( ServiceImporter.class ) ) - { - if( reference.identity().equals( serviceId ) ) - { - service = reference.get(); - break; - } - } - } - - if( service == null ) - { - throw new ServiceImporterException( "No service importer with id '" + serviceId + "' was found" ); - } - - return service; - } -} http://git-wip-us.apache.org/repos/asf/zest-java/blob/8744a67f/core/api/src/main/java/org/qi4j/api/service/importer/ServiceSelectorImporter.java ---------------------------------------------------------------------- diff --git a/core/api/src/main/java/org/qi4j/api/service/importer/ServiceSelectorImporter.java b/core/api/src/main/java/org/qi4j/api/service/importer/ServiceSelectorImporter.java deleted file mode 100644 index ad3c757..0000000 --- a/core/api/src/main/java/org/qi4j/api/service/importer/ServiceSelectorImporter.java +++ /dev/null @@ -1,78 +0,0 @@ -/* - * Copyright (c) 2008, Rickard Ãberg. All Rights Reserved. - * - * 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.api.service.importer; - -import java.util.ArrayList; -import java.util.List; -import org.qi4j.api.injection.scope.Structure; -import org.qi4j.api.service.Availability; -import org.qi4j.api.service.ImportedServiceDescriptor; -import org.qi4j.api.service.ServiceFinder; -import org.qi4j.api.service.ServiceImporter; -import org.qi4j.api.service.ServiceImporterException; -import org.qi4j.api.service.ServiceReference; -import org.qi4j.api.service.qualifier.ServiceQualifier; -import org.qi4j.functional.Iterables; -import org.qi4j.functional.Specification; - -/** - * If several services are available with a given type, and you want to constrain - * the current module to use a specific one, then use this importer. Specify a - * Specification<ServiceReference<T>> criteria as meta-info for the service, which will be applied - * to the list of available services, and the first match will be chosen. - * - * This importer will avoid selecting itself, as could be possible if the ServiceQualifier.first() - * filter is used. - */ -public final class ServiceSelectorImporter<T> - implements ServiceImporter<T> -{ - @Structure - private ServiceFinder locator; - - @Override - @SuppressWarnings( { "raw", "unchecked" } ) - public T importService( ImportedServiceDescriptor serviceDescriptor ) - throws ServiceImporterException - { - Specification<ServiceReference<?>> selector = serviceDescriptor.metaInfo( Specification.class ); - Class serviceType = Iterables.first( serviceDescriptor.types() ); - Iterable<ServiceReference<T>> services = locator.findServices( serviceType ); - List<ServiceReference<T>> filteredServices = new ArrayList<>(); - for( ServiceReference<T> service : services ) - { - Specification selector1 = service.metaInfo( Specification.class ); - if( selector1 != null && selector1 == selector ) - { - continue; - } - - filteredServices.add( service ); - } - T service = ServiceQualifier.firstService( selector, filteredServices ); - if( service == null ) - { - throw new ServiceImporterException( "Could not find any service to import that matches the given specification for " + serviceDescriptor - .identity() ); - } - return service; - } - - @Override - public boolean isAvailable( T instance ) - { - return !( instance instanceof Availability ) || ( (Availability) instance ).isAvailable(); - } -} http://git-wip-us.apache.org/repos/asf/zest-java/blob/8744a67f/core/api/src/main/java/org/qi4j/api/service/importer/package.html ---------------------------------------------------------------------- diff --git a/core/api/src/main/java/org/qi4j/api/service/importer/package.html b/core/api/src/main/java/org/qi4j/api/service/importer/package.html deleted file mode 100644 index d960b3d..0000000 --- a/core/api/src/main/java/org/qi4j/api/service/importer/package.html +++ /dev/null @@ -1,21 +0,0 @@ -<!-- -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. ---> -<html> - <body> - <h2>Service Importers.</h2> - </body> -</html> http://git-wip-us.apache.org/repos/asf/zest-java/blob/8744a67f/core/api/src/main/java/org/qi4j/api/service/package.html ---------------------------------------------------------------------- diff --git a/core/api/src/main/java/org/qi4j/api/service/package.html b/core/api/src/main/java/org/qi4j/api/service/package.html deleted file mode 100644 index 587937c..0000000 --- a/core/api/src/main/java/org/qi4j/api/service/package.html +++ /dev/null @@ -1,21 +0,0 @@ -<!-- -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. ---> -<html> - <body> - <h2>Service API.</h2> - </body> -</html> http://git-wip-us.apache.org/repos/asf/zest-java/blob/8744a67f/core/api/src/main/java/org/qi4j/api/service/qualifier/Active.java ---------------------------------------------------------------------- diff --git a/core/api/src/main/java/org/qi4j/api/service/qualifier/Active.java b/core/api/src/main/java/org/qi4j/api/service/qualifier/Active.java deleted file mode 100644 index d06a749..0000000 --- a/core/api/src/main/java/org/qi4j/api/service/qualifier/Active.java +++ /dev/null @@ -1,51 +0,0 @@ -/* - * Copyright (c) 2009, Rickard Ãberg. All Rights Reserved. - * - * 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.api.service.qualifier; - -import java.lang.annotation.Retention; -import java.lang.annotation.RetentionPolicy; -import org.qi4j.api.service.ServiceReference; -import org.qi4j.functional.Specification; - -/** - * Filter services based on whether they are active or not. - * <p> - * At an injection point you can do this: - * </p> - * <pre><code> - * @Service @Active MyService service; - * </code></pre> - * <p> - * to get only a service that is currently active. - * </p> - */ -@Retention( RetentionPolicy.RUNTIME ) -@Qualifier( Active.ActiveQualifier.class ) -public @interface Active -{ - /** - * Active Annotation Qualifier. - * See {@link Active}. - */ - public final class ActiveQualifier - implements AnnotationQualifier<Active> - { - @Override - public <T> Specification<ServiceReference<?>> qualifier( Active active ) - { - return ServiceQualifier.whereActive(); - } - } -} http://git-wip-us.apache.org/repos/asf/zest-java/blob/8744a67f/core/api/src/main/java/org/qi4j/api/service/qualifier/AnnotationQualifier.java ---------------------------------------------------------------------- diff --git a/core/api/src/main/java/org/qi4j/api/service/qualifier/AnnotationQualifier.java b/core/api/src/main/java/org/qi4j/api/service/qualifier/AnnotationQualifier.java deleted file mode 100644 index 7187ed1..0000000 --- a/core/api/src/main/java/org/qi4j/api/service/qualifier/AnnotationQualifier.java +++ /dev/null @@ -1,27 +0,0 @@ -/* - * Copyright (c) 2009, Rickard Ãberg. All Rights Reserved. - * - * 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.api.service.qualifier; - -import java.lang.annotation.Annotation; -import org.qi4j.api.service.ServiceReference; -import org.qi4j.functional.Specification; - -/** - * Constructs a Specification for a given qualifier annotation - */ -public interface AnnotationQualifier<QUALIFIER extends Annotation> -{ - public <T> Specification<ServiceReference<?>> qualifier( QUALIFIER qualifier ); -} http://git-wip-us.apache.org/repos/asf/zest-java/blob/8744a67f/core/api/src/main/java/org/qi4j/api/service/qualifier/Available.java ---------------------------------------------------------------------- diff --git a/core/api/src/main/java/org/qi4j/api/service/qualifier/Available.java b/core/api/src/main/java/org/qi4j/api/service/qualifier/Available.java deleted file mode 100644 index 894451d..0000000 --- a/core/api/src/main/java/org/qi4j/api/service/qualifier/Available.java +++ /dev/null @@ -1,49 +0,0 @@ -/* - * Copyright (c) 2009, Rickard Ãberg. All Rights Reserved. - * - * 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.api.service.qualifier; - -import java.lang.annotation.Retention; -import java.lang.annotation.RetentionPolicy; -import org.qi4j.api.service.ServiceReference; -import org.qi4j.functional.Specification; - -/** - * Filter services based on whether they are available or not. - * - * At an injection point you can do this: - * - * <pre><code> - * @Service @Available MyService service; - * </code></pre> - * to get only a service that is currently available. - */ -@Retention( RetentionPolicy.RUNTIME ) -@Qualifier( Available.AvailableQualifier.class ) -public @interface Available -{ - /** - * Available Annotation Qualifier. - * See {@link Available}. - */ - public final class AvailableQualifier - implements AnnotationQualifier<Available> - { - @Override - public <T> Specification<ServiceReference<?>> qualifier( Available active ) - { - return ServiceQualifier.whereAvailable(); - } - } -} http://git-wip-us.apache.org/repos/asf/zest-java/blob/8744a67f/core/api/src/main/java/org/qi4j/api/service/qualifier/HasMetaInfo.java ---------------------------------------------------------------------- diff --git a/core/api/src/main/java/org/qi4j/api/service/qualifier/HasMetaInfo.java b/core/api/src/main/java/org/qi4j/api/service/qualifier/HasMetaInfo.java deleted file mode 100644 index aac0702..0000000 --- a/core/api/src/main/java/org/qi4j/api/service/qualifier/HasMetaInfo.java +++ /dev/null @@ -1,102 +0,0 @@ -/* - * Copyright (c) 2009, Niclas Hedhman. All Rights Reserved. - * - * 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.api.service.qualifier; - -import java.lang.annotation.Documented; -import java.lang.annotation.Retention; -import java.lang.annotation.RetentionPolicy; -import org.qi4j.api.service.ServiceReference; -import org.qi4j.functional.Specification; - -/** - * Filter services based on Meta Info being declared on the Service. - * <p> - * Meta Info of any type can be set on the service during assembly, e.g.; - * </p> - * <pre><code> - * module.addService( MyService.class ).setMetaInfo( new MyCustomInfo(someData) ); - * </code></pre> - * <p> - * and then at an injection point you can do this: - * </p> - * <pre><code> - * @Service @HasMetaInfo(MyCustomInfo.class) MyService service; - * </code></pre> - * <p> - * to get only a service that has a MyCustomInfo instance set as meta info. - * </p> - */ -@Retention( RetentionPolicy.RUNTIME ) -@Qualifier( HasMetaInfo.HasMetaInfoQualifier.class ) -@Documented -public @interface HasMetaInfo -{ - /** - * The Class(es) needed to have been defined in the Service meta info for a qualifier to evaluate true. - * - * @return One or more classes that should be defined in the service's meta info for the service to be considered - * qualified. If more than one class is defined, the {@code anded()} parameter will define if they must be - * AND'ed or OR'ed together. - */ - Class[] value(); - - /** - * True if the Classes defined in the value() field should be AND'ed instead of OR'ed. - * - * @return If true, all the Class types defined in {@code value()} must be defined for the service for it to be - * qualified. If false, if any of the Class types defined in {@code value()} is defined for the service - * the service is qualified. - */ - boolean anded() default false; - - /** - * HasMetaInfo Annotation Qualifier. - * See {@link HasMetaInfo}. - */ - public static class HasMetaInfoQualifier - implements AnnotationQualifier<HasMetaInfo> - { - @Override - public <T> Specification<ServiceReference<?>> qualifier( final HasMetaInfo hasMetaInfo ) - { - return new Specification<ServiceReference<?>>() - { - @Override - @SuppressWarnings( {"raw", "unchecked"} ) - public boolean satisfiedBy( ServiceReference<?> service ) - { - for( Class metaInfoType : hasMetaInfo.value() ) - { - Object metaInfo = service.metaInfo( metaInfoType ); - if( hasMetaInfo.anded() ) - { - if( metaInfo == null ) - { - return false; - } - } - else - { - if( metaInfo != null ) - { - return true; - } - } - } - return false; - } - }; - } - } -} http://git-wip-us.apache.org/repos/asf/zest-java/blob/8744a67f/core/api/src/main/java/org/qi4j/api/service/qualifier/IdentifiedBy.java ---------------------------------------------------------------------- diff --git a/core/api/src/main/java/org/qi4j/api/service/qualifier/IdentifiedBy.java b/core/api/src/main/java/org/qi4j/api/service/qualifier/IdentifiedBy.java deleted file mode 100644 index 2c715d7..0000000 --- a/core/api/src/main/java/org/qi4j/api/service/qualifier/IdentifiedBy.java +++ /dev/null @@ -1,53 +0,0 @@ -/* - * Copyright (c) 2009, Rickard Ãberg. All Rights Reserved. - * - * 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.api.service.qualifier; - -import java.lang.annotation.Retention; -import java.lang.annotation.RetentionPolicy; -import org.qi4j.api.service.ServiceReference; -import org.qi4j.functional.Specification; - -/** - * Filter services based on identity. Identity can be set during assembly, like so: - * <pre><code> - * module.addService(MyService.class).identifiedBy("myservice1"); - * </code></pre> - * - * and then at an injection point you can do this: - * <pre><code> - * @Service @IdentifiedBy("myservice1") MyService service; - * </code></pre> - * to get only a service identified "myservice1". - */ -@Retention( RetentionPolicy.RUNTIME ) -@Qualifier( IdentifiedBy.IdentifiedByQualifier.class ) -public @interface IdentifiedBy -{ - public abstract String value(); - - /** - * IdentifiedBy Annotation Qualifier. - * See {@link IdentifiedBy}. - */ - public final class IdentifiedByQualifier - implements AnnotationQualifier<IdentifiedBy> - { - @Override - public <T> Specification<ServiceReference<?>> qualifier( IdentifiedBy identifiedBy ) - { - return ServiceQualifier.withId( identifiedBy.value() ); - } - } -} http://git-wip-us.apache.org/repos/asf/zest-java/blob/8744a67f/core/api/src/main/java/org/qi4j/api/service/qualifier/Qualifier.java ---------------------------------------------------------------------- diff --git a/core/api/src/main/java/org/qi4j/api/service/qualifier/Qualifier.java b/core/api/src/main/java/org/qi4j/api/service/qualifier/Qualifier.java deleted file mode 100644 index 50efb1c..0000000 --- a/core/api/src/main/java/org/qi4j/api/service/qualifier/Qualifier.java +++ /dev/null @@ -1,27 +0,0 @@ -/* - * Copyright (c) 2009, Rickard Ãberg. All Rights Reserved. - * - * 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.api.service.qualifier; - -import java.lang.annotation.Retention; -import java.lang.annotation.RetentionPolicy; - -/** - * Annotation used to declare Qualifiers annotations. - */ -@Retention( RetentionPolicy.RUNTIME ) -public @interface Qualifier -{ - public abstract Class<? extends AnnotationQualifier> value(); -} http://git-wip-us.apache.org/repos/asf/zest-java/blob/8744a67f/core/api/src/main/java/org/qi4j/api/service/qualifier/ServiceQualifier.java ---------------------------------------------------------------------- diff --git a/core/api/src/main/java/org/qi4j/api/service/qualifier/ServiceQualifier.java b/core/api/src/main/java/org/qi4j/api/service/qualifier/ServiceQualifier.java deleted file mode 100644 index 75410d6..0000000 --- a/core/api/src/main/java/org/qi4j/api/service/qualifier/ServiceQualifier.java +++ /dev/null @@ -1,121 +0,0 @@ -/* - * Copyright (c) 2008, Rickard Ãberg. All Rights Reserved. - * - * 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.api.service.qualifier; - -import org.qi4j.api.service.ServiceReference; -import org.qi4j.functional.Specification; - -/** - * This class helps you select a particular service - * from a list. - * <p> - * Provide a Selector which does the actual - * selection from the list. A common case is to select - * based on identity of the service, which you can do this way: - * </p> - * - * <pre><code> - * new ServiceQualifier<MyService>(services, ServiceQualifier.withId("someId")) - * </code></pre> - * <p> - * Many selectors can be combined by using firstOf. Example: - * </p> - * <pre><code> - * new ServiceQualifier<MyService>(services, firstOf(withTags("sometag"), firstActive(), first())) - * </code></pre> - * <p> - * This will pick a service that has the tag "sometag", or if none is found take the first active one. If no - * service is active, then the first service will be picked. - * </p> - */ -public abstract class ServiceQualifier -{ - public static <T> T firstService( Specification<ServiceReference<?>> qualifier, - Iterable<ServiceReference<T>> services - ) - { - for( ServiceReference<T> service : services ) - { - if( qualifier.satisfiedBy( service ) ) - { - return service.get(); - } - } - return null; - } - - public static Specification<ServiceReference<?>> withId( final String anId ) - { - return new Specification<ServiceReference<?>>() - { - @Override - public boolean satisfiedBy( ServiceReference<?> service ) - { - return service.identity().equals( anId ); - } - }; - } - - public static Specification<ServiceReference<?>> whereMetaInfoIs( final Object metaInfo ) - { - return new Specification<ServiceReference<?>>() - { - @Override - public boolean satisfiedBy( ServiceReference<?> service ) - { - Object metaObject = service.metaInfo( metaInfo.getClass() ); - return metaObject != null && metaInfo.equals( metaObject ); - } - }; - } - - public static Specification<ServiceReference<?>> whereActive() - { - return new Specification<ServiceReference<?>>() - { - @Override - public boolean satisfiedBy( ServiceReference<?> service ) - { - return service.isActive(); - } - }; - } - - public static Specification<ServiceReference<?>> whereAvailable() - { - return new Specification<ServiceReference<?>>() - { - @Override - public boolean satisfiedBy( ServiceReference<?> service ) - { - return service.isAvailable(); - } - }; - } - - public static Specification<ServiceReference<?>> withTags( final String... tags ) - { - return new Specification<ServiceReference<?>>() - { - @Override - public boolean satisfiedBy( ServiceReference<?> service ) - { - ServiceTags serviceTags = service.metaInfo( ServiceTags.class ); - - return serviceTags != null && serviceTags.hasTags( tags ); - } - }; - } -} http://git-wip-us.apache.org/repos/asf/zest-java/blob/8744a67f/core/api/src/main/java/org/qi4j/api/service/qualifier/ServiceTags.java ---------------------------------------------------------------------- diff --git a/core/api/src/main/java/org/qi4j/api/service/qualifier/ServiceTags.java b/core/api/src/main/java/org/qi4j/api/service/qualifier/ServiceTags.java deleted file mode 100644 index 5ee8cb5..0000000 --- a/core/api/src/main/java/org/qi4j/api/service/qualifier/ServiceTags.java +++ /dev/null @@ -1,66 +0,0 @@ -/* - * Copyright (c) 2008, Rickard Ãberg. All Rights Reserved. - * - * 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.api.service.qualifier; - -import java.io.Serializable; - -/** - * Use this as metainfo about a Service to specify tags. Easiest way to set them on a service - * is to use the <code>ServiceDeclaration.taggedWith(String...)</code> method. - * - * These can be used in conjunction with the withTags() Service - * Selector. - */ -public final class ServiceTags - implements Serializable -{ - private String[] tags; - - public ServiceTags( String... tags ) - { - this.tags = tags; - } - - public String[] tags() - { - return tags; - } - - public boolean hasTag( String tag ) - { - for( String serviceTag : tags ) - { - if( serviceTag.equals( tag ) ) - { - return true; - } - } - - return false; - } - - public boolean hasTags( String... aTags ) - { - for( String tag : aTags ) - { - if( !hasTag( tag ) ) - { - return false; - } - } - - return true; - } -} http://git-wip-us.apache.org/repos/asf/zest-java/blob/8744a67f/core/api/src/main/java/org/qi4j/api/service/qualifier/Tagged.java ---------------------------------------------------------------------- diff --git a/core/api/src/main/java/org/qi4j/api/service/qualifier/Tagged.java b/core/api/src/main/java/org/qi4j/api/service/qualifier/Tagged.java deleted file mode 100644 index 3c8c0b7..0000000 --- a/core/api/src/main/java/org/qi4j/api/service/qualifier/Tagged.java +++ /dev/null @@ -1,54 +0,0 @@ -/* - * Copyright (c) 2009, Rickard Ãberg. All Rights Reserved. - * - * 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.api.service.qualifier; - -import java.lang.annotation.Retention; -import java.lang.annotation.RetentionPolicy; -import org.qi4j.api.service.ServiceReference; -import org.qi4j.functional.Specification; - -/** - * Filter services based on tags. Tags can be set using the ServiceTags meta-info, like so: - * <pre><code> - * module.addService(MyService.class).taggedWith(new ServiceTags("onetag","twotag")); - * </code></pre> - * - * and then at an injection point you can do this: - * - * <pre><code> - * @Service @Tagged("onetag") MyService service; - * </code></pre> - * to get only a service tagged with MyService. If several match only the first match is used. - */ -@Retention( RetentionPolicy.RUNTIME ) -@Qualifier( Tagged.TaggedQualifier.class ) -public @interface Tagged -{ - public abstract String[] value(); - - /** - * Tagged Annotation Qualifier. - * See {@link Tagged}. - */ - public final class TaggedQualifier - implements AnnotationQualifier<Tagged> - { - @Override - public Specification<ServiceReference<?>> qualifier( Tagged tagged ) - { - return ServiceQualifier.withTags( tagged.value() ); - } - } -} http://git-wip-us.apache.org/repos/asf/zest-java/blob/8744a67f/core/api/src/main/java/org/qi4j/api/service/qualifier/package.html ---------------------------------------------------------------------- diff --git a/core/api/src/main/java/org/qi4j/api/service/qualifier/package.html b/core/api/src/main/java/org/qi4j/api/service/qualifier/package.html deleted file mode 100644 index ec0edd3..0000000 --- a/core/api/src/main/java/org/qi4j/api/service/qualifier/package.html +++ /dev/null @@ -1,59 +0,0 @@ -<!-- -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. ---> -<html> - <body> - <h2>Service Qualifiers.</h2> - <p> - The @Service injection is only able to specify the type of the service to be injected. If any other type of - qualification has to be done it has to be done manually but for common cases it's more convenient to use - annotations to do this filtering. This package contains annotations to perform this qualification. - </p> - <p>Example:</p> - <blockquote> - <pre>@Service @Tagged( "sometag" ) MyService service;</pre> - </blockquote> - <p> - This will only inject instances of MyService that have been tagged with "sometag". If none exist an - exception will occur at injection time since it is not optional. - </p> - <p>It also works with iterables:</p> - <blockquote> - <pre>@Service @Tagged( "sometag" ) Iterable<MyService> services;</pre> - </blockquote> - <p> - The qualification will be evaluated upon each call to iterator(), and since the qualifier has access to a - ServiceReference, which contains the isActive() method, it can even provide some dynamicity. - </p> - <blockquote> - <pre>@Service @Active Iterable<SomeImportedService> importedServices;</pre> - </blockquote> - <p> - Let's say these SomeImportedService are only sometimes available. Then whenever iterator() is called the - {@link org.qi4j.api.service.qualifier.Active} tag can kick in and filter out those whose - ServiceReference.isActive() returns false. - </p> - <p>Standard ones defined in the API are:</p> - <ul> - <li>{@link org.qi4j.api.service.qualifier.Active}</li> - <li>{@link org.qi4j.api.service.qualifier.Available}</li> - <li>{@link org.qi4j.api.service.qualifier.HasMetaInfo}</li> - <li>{@link org.qi4j.api.service.qualifier.IdentifiedBy}</li> - <li>{@link org.qi4j.api.service.qualifier.Tagged}</li> - </ul> - <p>See tests and API for more examples, and how to implement your own qualifiers.</p> - </body> -</html> http://git-wip-us.apache.org/repos/asf/zest-java/blob/8744a67f/core/api/src/main/java/org/qi4j/api/sideeffect/GenericSideEffect.java ---------------------------------------------------------------------- diff --git a/core/api/src/main/java/org/qi4j/api/sideeffect/GenericSideEffect.java b/core/api/src/main/java/org/qi4j/api/sideeffect/GenericSideEffect.java deleted file mode 100644 index 167c1ef..0000000 --- a/core/api/src/main/java/org/qi4j/api/sideeffect/GenericSideEffect.java +++ /dev/null @@ -1,61 +0,0 @@ -/* - * Copyright 2008 Niclas Hedhman. All rights Reserved. - * - * 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.api.sideeffect; - -import java.lang.reflect.InvocationHandler; -import java.lang.reflect.Method; - -/** - * Base class for generic SideEffects. - */ -public abstract class GenericSideEffect - extends SideEffectOf<InvocationHandler> - implements InvocationHandler -{ - - /** - * {@inheritDoc} - */ - @Override - public Object invoke( final Object proxy, final Method method, final Object[] args ) - throws Throwable - { - invoke( method, args ); - return null; - } - - /** - * Convenience method to be overridden by subclasses in order to avoid returning null, as returned value from side - * effects is not taken in consideration. - * - * @param method the method that was invoked - * @param args the arguments of the method invocation - * - * @throws Throwable - the exception to throw from the method invocation on the proxy instance. The exception's type - * must be assignable either to any of the exception types declared in the throws clause of the - * interface method or to the unchecked exception types {code}java.lang.RuntimeException{code} - * or {code}java.lang.Error{code}. If a checked exception is thrown by this method that is not - * assignable to any of the exception types declared in the throws clause of the interface method, - * then an UndeclaredThrowableException containing the exception that was thrown by this method - * will be thrown by the method invocation on the proxy instance. - */ - protected void invoke( final Method method, final Object[] args ) - throws Throwable - { - } -} \ No newline at end of file http://git-wip-us.apache.org/repos/asf/zest-java/blob/8744a67f/core/api/src/main/java/org/qi4j/api/sideeffect/SideEffectDescriptor.java ---------------------------------------------------------------------- diff --git a/core/api/src/main/java/org/qi4j/api/sideeffect/SideEffectDescriptor.java b/core/api/src/main/java/org/qi4j/api/sideeffect/SideEffectDescriptor.java deleted file mode 100644 index 85e8610..0000000 --- a/core/api/src/main/java/org/qi4j/api/sideeffect/SideEffectDescriptor.java +++ /dev/null @@ -1,23 +0,0 @@ -/* - * Copyright (c) 2008, Rickard Ãberg. All Rights Reserved. - * - * 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.api.sideeffect; - -/** - * SideEffect Descriptor. - */ -public interface SideEffectDescriptor -{ - Class<?> modifierClass(); -} http://git-wip-us.apache.org/repos/asf/zest-java/blob/8744a67f/core/api/src/main/java/org/qi4j/api/sideeffect/SideEffectOf.java ---------------------------------------------------------------------- diff --git a/core/api/src/main/java/org/qi4j/api/sideeffect/SideEffectOf.java b/core/api/src/main/java/org/qi4j/api/sideeffect/SideEffectOf.java deleted file mode 100644 index 39113cc..0000000 --- a/core/api/src/main/java/org/qi4j/api/sideeffect/SideEffectOf.java +++ /dev/null @@ -1,38 +0,0 @@ -/* - * Copyright 2008 Niclas Hedhman. All rights Reserved. - * - * 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.api.sideeffect; - -import org.qi4j.api.sideeffect.internal.SideEffectFor; - -/** - * Base class for SideEffects. It introduces a typed "next" pointer - * that SideEffects can use to get the result of the original invocation. - * <p> - * Generic SideEffects should subclass {@link GenericSideEffect} instead. - * </p> - * <p> - * SideEffects implementations must be thread-safe in their implementation, - * as multiple threads may share instances. - * </p> - */ -public abstract class SideEffectOf<T> -{ - final - @SideEffectFor - protected T result = null; -} http://git-wip-us.apache.org/repos/asf/zest-java/blob/8744a67f/core/api/src/main/java/org/qi4j/api/sideeffect/SideEffects.java ---------------------------------------------------------------------- diff --git a/core/api/src/main/java/org/qi4j/api/sideeffect/SideEffects.java b/core/api/src/main/java/org/qi4j/api/sideeffect/SideEffects.java deleted file mode 100644 index bd2e525..0000000 --- a/core/api/src/main/java/org/qi4j/api/sideeffect/SideEffects.java +++ /dev/null @@ -1,33 +0,0 @@ -/* - * Copyright (c) 2007, Rickard Ãberg. All Rights Reserved. - * - * 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.api.sideeffect; - -import java.lang.annotation.Documented; -import java.lang.annotation.ElementType; -import java.lang.annotation.Retention; -import java.lang.annotation.RetentionPolicy; -import java.lang.annotation.Target; - -/** - * This annotation is used by composites and mixins to declare what SideEffects - * should apply to the type or specific method. - */ -@Retention( RetentionPolicy.RUNTIME ) -@Target( { ElementType.TYPE, ElementType.METHOD } ) -@Documented -public @interface SideEffects -{ - Class<?>[] value(); -} http://git-wip-us.apache.org/repos/asf/zest-java/blob/8744a67f/core/api/src/main/java/org/qi4j/api/sideeffect/SideEffectsDescriptor.java ---------------------------------------------------------------------- diff --git a/core/api/src/main/java/org/qi4j/api/sideeffect/SideEffectsDescriptor.java b/core/api/src/main/java/org/qi4j/api/sideeffect/SideEffectsDescriptor.java deleted file mode 100644 index 9f569ea..0000000 --- a/core/api/src/main/java/org/qi4j/api/sideeffect/SideEffectsDescriptor.java +++ /dev/null @@ -1,24 +0,0 @@ -/* Copyright 2008 Edward Yakop. -* -* 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.api.sideeffect; - -/** - * SideEffects Descriptor. - */ -public interface SideEffectsDescriptor -{ -} http://git-wip-us.apache.org/repos/asf/zest-java/blob/8744a67f/core/api/src/main/java/org/qi4j/api/sideeffect/internal/SideEffectFor.java ---------------------------------------------------------------------- diff --git a/core/api/src/main/java/org/qi4j/api/sideeffect/internal/SideEffectFor.java b/core/api/src/main/java/org/qi4j/api/sideeffect/internal/SideEffectFor.java deleted file mode 100644 index 1ab3383..0000000 --- a/core/api/src/main/java/org/qi4j/api/sideeffect/internal/SideEffectFor.java +++ /dev/null @@ -1,63 +0,0 @@ -/* - * Copyright (c) 2007, Rickard Ãberg. All Rights Reserved. - * - * 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.api.sideeffect.internal; - -import java.lang.annotation.Documented; -import java.lang.annotation.ElementType; -import java.lang.annotation.Retention; -import java.lang.annotation.RetentionPolicy; -import java.lang.annotation.Target; -import org.qi4j.api.injection.InjectionScope; - -/** - * This annotation is required once in each SideEffect, to mark the - * field where the element providing the invocation result should be - * injected. - * <p> - * The type of the field must be of the same type as the SideEffect - * itself, or an InvocationHandler. - * </p> - * <p> - * Example; - * </p> - * <pre><code> - * public interface MyStuff - * { - * SomeResult doSomething(); - * } - * - * public class MyStuffSideEffect - * implements MyStuff - * { - * @SideEffectFor MyStuff next; - * - * public SomeResult doSomething() - * { - * SomeResult result = next.doSomething(); - * - * // HERE DO THE SIDEEFFECT STUFF. - * - * return result; // Result value is ignored, null would work too. - * } - * } - * </code></pre> - */ -@Retention(RetentionPolicy.RUNTIME) -@Target({ ElementType.FIELD, ElementType.PARAMETER }) -@Documented -@InjectionScope -public @interface SideEffectFor -{ -} http://git-wip-us.apache.org/repos/asf/zest-java/blob/8744a67f/core/api/src/main/java/org/qi4j/api/sideeffect/internal/package.html ---------------------------------------------------------------------- diff --git a/core/api/src/main/java/org/qi4j/api/sideeffect/internal/package.html b/core/api/src/main/java/org/qi4j/api/sideeffect/internal/package.html deleted file mode 100644 index 269774e..0000000 --- a/core/api/src/main/java/org/qi4j/api/sideeffect/internal/package.html +++ /dev/null @@ -1,25 +0,0 @@ -<!-- -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. ---> -<html> - <body> - <h1>Internal/Private package for the API.</h1> - <p> - This is an internal package, and no classes in this package is part of the API and compatibility - with these classes will not be attempted. - </p> - </body> -</html> \ No newline at end of file http://git-wip-us.apache.org/repos/asf/zest-java/blob/8744a67f/core/api/src/main/java/org/qi4j/api/sideeffect/package.html ---------------------------------------------------------------------- diff --git a/core/api/src/main/java/org/qi4j/api/sideeffect/package.html b/core/api/src/main/java/org/qi4j/api/sideeffect/package.html deleted file mode 100644 index a658adb..0000000 --- a/core/api/src/main/java/org/qi4j/api/sideeffect/package.html +++ /dev/null @@ -1,21 +0,0 @@ -<!-- -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. ---> -<html> - <body> - <h2>SideEffect API.</h2> - </body> -</html> http://git-wip-us.apache.org/repos/asf/zest-java/blob/8744a67f/core/api/src/main/java/org/qi4j/api/structure/Application.java ---------------------------------------------------------------------- diff --git a/core/api/src/main/java/org/qi4j/api/structure/Application.java b/core/api/src/main/java/org/qi4j/api/structure/Application.java deleted file mode 100644 index 6023942..0000000 --- a/core/api/src/main/java/org/qi4j/api/structure/Application.java +++ /dev/null @@ -1,93 +0,0 @@ -/* - * Copyright (c) 2008, Rickard Ãberg. All Rights Reserved. - * Copyright (c) 2008, Niclas Hedhman. - * - * 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.api.structure; - -import org.qi4j.api.activation.Activation; -import org.qi4j.api.activation.ActivationEventListenerRegistration; - -/** - * The Application represents a whole Zest application. - */ -public interface Application - extends ActivationEventListenerRegistration, Activation, MetaInfoHolder -{ - /** - * Application modes. - */ - public enum Mode - { - /** - * Should be used for unit test runs. Created files etc. should be cleaned up between runs. - */ - test, - /** - * Should be used during development. Typically create in-memory databases etc. - */ - development, - /** - * Should be used in QA environments, and other production-like settings where different set of external - * resources are utilized. - */ - staging, - /** - * Should be used in production. All databases are persistent on disk etc. - */ - production - } - - /** - * @return Application name - */ - String name(); - - /** - * The version of the application. This can be in any format, but - * most likely will follow the Dewey format, i.e. x.y.z. - * - * @return the version of the application - */ - String version(); - - /** - * @return Application Mode - */ - Mode mode(); - - /** - * Find a Layer. - * - * @param layerName Layer name - * @return Found Layer, never returns null - * @throws IllegalArgumentException if there's no such Layer - */ - Layer findLayer( String layerName ) - throws IllegalArgumentException; - - /** - * Find a Module. - * - * @param layerName Layer name - * @param moduleName Module name - * @return Found Module, never returns null - * @throws IllegalArgumentException if there's no such Module - */ - Module findModule( String layerName, String moduleName ) - throws IllegalArgumentException; - - /** - * @return Application Descriptor - */ - ApplicationDescriptor descriptor(); -} http://git-wip-us.apache.org/repos/asf/zest-java/blob/8744a67f/core/api/src/main/java/org/qi4j/api/structure/ApplicationDescriptor.java ---------------------------------------------------------------------- diff --git a/core/api/src/main/java/org/qi4j/api/structure/ApplicationDescriptor.java b/core/api/src/main/java/org/qi4j/api/structure/ApplicationDescriptor.java deleted file mode 100644 index b33f134..0000000 --- a/core/api/src/main/java/org/qi4j/api/structure/ApplicationDescriptor.java +++ /dev/null @@ -1,37 +0,0 @@ -/* - * Copyright (c) 2008, Rickard Ãberg. All Rights Reserved. - * - * 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.api.structure; - -import org.qi4j.api.Qi4j; -import org.qi4j.functional.VisitableHierarchy; - -/** - * Application Descriptor. - */ -public interface ApplicationDescriptor - extends VisitableHierarchy<Object, Object> -{ - /** - * Create a new instance of the Application. - * @param runtime Zest Runtime - * @param importedServiceInstances Imported Services instances - * @return a new instance of the Application. - */ - Application newInstance( Qi4j runtime, Object... importedServiceInstances ); - - /** - * @return the Application's name - */ - String name(); -} http://git-wip-us.apache.org/repos/asf/zest-java/blob/8744a67f/core/api/src/main/java/org/qi4j/api/structure/Layer.java ---------------------------------------------------------------------- diff --git a/core/api/src/main/java/org/qi4j/api/structure/Layer.java b/core/api/src/main/java/org/qi4j/api/structure/Layer.java deleted file mode 100644 index 4268764..0000000 --- a/core/api/src/main/java/org/qi4j/api/structure/Layer.java +++ /dev/null @@ -1,31 +0,0 @@ -/* - * Copyright (c) 2008, Rickard Ãberg. All Rights Reserved. - * Copyright (c) 2008, Niclas Hedhman. - * - * 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.api.structure; - -import org.qi4j.api.activation.Activation; -import org.qi4j.api.activation.ActivationEventListenerRegistration; - -/** - * The Layer represents a single layer in a Zest application. - */ -public interface Layer - extends ActivationEventListenerRegistration, Activation, MetaInfoHolder -{ - /** - * @return the Layer's name - */ - String name(); -} http://git-wip-us.apache.org/repos/asf/zest-java/blob/8744a67f/core/api/src/main/java/org/qi4j/api/structure/LayerDescriptor.java ---------------------------------------------------------------------- diff --git a/core/api/src/main/java/org/qi4j/api/structure/LayerDescriptor.java b/core/api/src/main/java/org/qi4j/api/structure/LayerDescriptor.java deleted file mode 100644 index db0c56a..0000000 --- a/core/api/src/main/java/org/qi4j/api/structure/LayerDescriptor.java +++ /dev/null @@ -1,31 +0,0 @@ -/* - * Copyright (c) 2008, Rickard Ãberg. All Rights Reserved. - * - * 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.api.structure; - -/** - * Layer Descriptor. - */ -public interface LayerDescriptor -{ - - /** - * @return the Layer's name - */ - String name(); - - /** - * @return Layers used by this Layer - */ - UsedLayersDescriptor usedLayers(); -} \ No newline at end of file http://git-wip-us.apache.org/repos/asf/zest-java/blob/8744a67f/core/api/src/main/java/org/qi4j/api/structure/MetaInfoHolder.java ---------------------------------------------------------------------- diff --git a/core/api/src/main/java/org/qi4j/api/structure/MetaInfoHolder.java b/core/api/src/main/java/org/qi4j/api/structure/MetaInfoHolder.java deleted file mode 100644 index f497a75..0000000 --- a/core/api/src/main/java/org/qi4j/api/structure/MetaInfoHolder.java +++ /dev/null @@ -1,35 +0,0 @@ -/* - * Copyright (c) 2012, Niclas Hedhman. All Rights Reserved. - * - * 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.api.structure; - -/** - * MetaInfo holder. - */ -public interface MetaInfoHolder -{ - - /** - * Get metadata that implements the given type. - * The info is registered during assembly of the application. - * - * @param infoType the type of metadata to be returned - * - * @return the metadata for the given type, or <code>null</code> if - * no such metadata has been registered - */ - <T> T metaInfo( Class<T> infoType ); -} http://git-wip-us.apache.org/repos/asf/zest-java/blob/8744a67f/core/api/src/main/java/org/qi4j/api/structure/Module.java ---------------------------------------------------------------------- diff --git a/core/api/src/main/java/org/qi4j/api/structure/Module.java b/core/api/src/main/java/org/qi4j/api/structure/Module.java deleted file mode 100644 index 47ffab8..0000000 --- a/core/api/src/main/java/org/qi4j/api/structure/Module.java +++ /dev/null @@ -1,83 +0,0 @@ -/* - * Copyright (c) 2008, Rickard Ãberg. All Rights Reserved. - * Copyright (c) 2008, Niclas Hedhman. - * - * 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.api.structure; - -import org.qi4j.api.activation.ActivationEventListenerRegistration; -import org.qi4j.api.composite.TransientBuilderFactory; -import org.qi4j.api.composite.TransientDescriptor; -import org.qi4j.api.entity.EntityDescriptor; -import org.qi4j.api.injection.scope.Structure; -import org.qi4j.api.object.ObjectDescriptor; -import org.qi4j.api.object.ObjectFactory; -import org.qi4j.api.query.QueryBuilderFactory; -import org.qi4j.api.service.ServiceFinder; -import org.qi4j.api.unitofwork.UnitOfWorkFactory; -import org.qi4j.api.value.ValueBuilderFactory; -import org.qi4j.api.value.ValueDescriptor; -import org.qi4j.functional.Function; -import org.qi4j.functional.Visitable; -import org.qi4j.functional.Visitor; - -/** - * API for interacting with a Module. Instances - * of this can be accessed by using the {@link Structure} - * injection scope. - */ -public interface Module - extends ActivationEventListenerRegistration, - MetaInfoHolder, - ObjectFactory, - TransientBuilderFactory, - ValueBuilderFactory, - UnitOfWorkFactory, - QueryBuilderFactory, - ServiceFinder -{ - - /** - * @return the Module's name - */ - String name(); - - /** - * @return the Module's ClassLoader - */ - ClassLoader classLoader(); - - /** - * @param typeName name of a transient composite type - * @return the descriptor for a transient composite or null if the class could not be found or the transient composite is not visible - */ - TransientDescriptor transientDescriptor( String typeName ); - - /** - * @param typeName name of an entity composite type - * @return the descriptor for an entity composite or null if the class could not be found or the entity composite is not visible - */ - EntityDescriptor entityDescriptor( String typeName ); - - /** - * @param typeName name of an object type - * @return the descriptor for an object or null if the class could not be found or the object is not visible - */ - ObjectDescriptor objectDescriptor( String typeName ); - - /** - * @param typeName name of a value composite type - * @return the descriptor for a value composite or null if the class could not be found or the value composite is not visible - */ - ValueDescriptor valueDescriptor( String typeName ); - -} http://git-wip-us.apache.org/repos/asf/zest-java/blob/8744a67f/core/api/src/main/java/org/qi4j/api/structure/ModuleDescriptor.java ---------------------------------------------------------------------- diff --git a/core/api/src/main/java/org/qi4j/api/structure/ModuleDescriptor.java b/core/api/src/main/java/org/qi4j/api/structure/ModuleDescriptor.java deleted file mode 100644 index ffb7b9b..0000000 --- a/core/api/src/main/java/org/qi4j/api/structure/ModuleDescriptor.java +++ /dev/null @@ -1,23 +0,0 @@ -/* - * Copyright (c) 2008, Rickard Ãberg. All Rights Reserved. - * - * 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.api.structure; - -/** - * Module Descriptor. - */ -public interface ModuleDescriptor -{ - String name(); -} http://git-wip-us.apache.org/repos/asf/zest-java/blob/8744a67f/core/api/src/main/java/org/qi4j/api/structure/UsedLayersDescriptor.java ---------------------------------------------------------------------- diff --git a/core/api/src/main/java/org/qi4j/api/structure/UsedLayersDescriptor.java b/core/api/src/main/java/org/qi4j/api/structure/UsedLayersDescriptor.java deleted file mode 100644 index ee530b7..0000000 --- a/core/api/src/main/java/org/qi4j/api/structure/UsedLayersDescriptor.java +++ /dev/null @@ -1,23 +0,0 @@ -/* - * Copyright (c) 2008, Rickard Ãberg. All Rights Reserved. - * - * 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.api.structure; - -/** - * Used Layers Descriptor. - */ -public interface UsedLayersDescriptor -{ - Iterable<? extends LayerDescriptor> layers(); -} http://git-wip-us.apache.org/repos/asf/zest-java/blob/8744a67f/core/api/src/main/java/org/qi4j/api/structure/package.html ---------------------------------------------------------------------- diff --git a/core/api/src/main/java/org/qi4j/api/structure/package.html b/core/api/src/main/java/org/qi4j/api/structure/package.html deleted file mode 100644 index 3134a90..0000000 --- a/core/api/src/main/java/org/qi4j/api/structure/package.html +++ /dev/null @@ -1,21 +0,0 @@ -<!-- -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. ---> -<html> - <body> - <h2>Application Structure API.</h2> - </body> -</html> http://git-wip-us.apache.org/repos/asf/zest-java/blob/8744a67f/core/api/src/main/java/org/qi4j/api/type/CollectionType.java ---------------------------------------------------------------------- diff --git a/core/api/src/main/java/org/qi4j/api/type/CollectionType.java b/core/api/src/main/java/org/qi4j/api/type/CollectionType.java deleted file mode 100644 index 1b85b5f..0000000 --- a/core/api/src/main/java/org/qi4j/api/type/CollectionType.java +++ /dev/null @@ -1,72 +0,0 @@ -/* - * Copyright (c) 2009, Rickard Ãberg. All Rights Reserved. - * - * 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.api.type; - -import java.lang.reflect.Type; -import java.util.Collection; -import java.util.List; -import java.util.Set; -import org.qi4j.api.util.Classes; - -/** - * Collection ValueType. - * <p>This handles Collection, List and Set types.</p> - */ -public final class CollectionType - extends ValueType -{ - - public static boolean isCollection( Type type ) - { - Class<?> cl = Classes.RAW_CLASS.map( type ); - return cl.equals( Collection.class ) || cl.equals( List.class ) || cl.equals( Set.class ); - } - - public static CollectionType collectionOf( Class<?> collectedType ) - { - return new CollectionType( Collection.class, ValueType.of( collectedType ) ); - } - - public static CollectionType listOf( Class<?> collectedType ) - { - return new CollectionType( List.class, ValueType.of( collectedType ) ); - } - - public static CollectionType setOf( Class<?> collectedType ) - { - return new CollectionType( Set.class, ValueType.of( collectedType ) ); - } - private ValueType collectedType; - - public CollectionType( Class<?> type, ValueType collectedType ) - { - super( type ); - this.collectedType = collectedType; - if( !isCollection( type ) ) - { - throw new IllegalArgumentException( type + " is not a Collection, List or Set." ); - } - } - - public ValueType collectedType() - { - return collectedType; - } - - @Override - public String toString() - { - return super.toString() + "<" + collectedType + ">"; - } -} http://git-wip-us.apache.org/repos/asf/zest-java/blob/8744a67f/core/api/src/main/java/org/qi4j/api/type/EnumType.java ---------------------------------------------------------------------- diff --git a/core/api/src/main/java/org/qi4j/api/type/EnumType.java b/core/api/src/main/java/org/qi4j/api/type/EnumType.java deleted file mode 100644 index aa4ff31..0000000 --- a/core/api/src/main/java/org/qi4j/api/type/EnumType.java +++ /dev/null @@ -1,48 +0,0 @@ -/* - * Copyright (c) 2009, Rickard Ãberg. All Rights Reserved. - * - * 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.api.type; - -import java.lang.reflect.Type; - -/** - * Enum ValueType. - */ -public final class EnumType - extends ValueType -{ - - public static boolean isEnum( Type type ) - { - if( type instanceof Class ) - { - Class<?> typeClass = (Class) type; - return ( typeClass.isEnum() ); - } - return false; - } - - public static EnumType of( Class<?> type ) - { - return new EnumType( type ); - } - - public EnumType( Class<?> type ) - { - super( type ); - if( !isEnum( type ) ) - { - throw new IllegalArgumentException( type + " is not an Enum." ); - } - } -} \ No newline at end of file http://git-wip-us.apache.org/repos/asf/zest-java/blob/8744a67f/core/api/src/main/java/org/qi4j/api/type/HasTypes.java ---------------------------------------------------------------------- diff --git a/core/api/src/main/java/org/qi4j/api/type/HasTypes.java b/core/api/src/main/java/org/qi4j/api/type/HasTypes.java deleted file mode 100644 index 0ad36a4..0000000 --- a/core/api/src/main/java/org/qi4j/api/type/HasTypes.java +++ /dev/null @@ -1,27 +0,0 @@ -/* - * 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.qi4j.api.type; - -/** - * Has types. - */ -public interface HasTypes -{ - Iterable<Class<?>> types(); -} http://git-wip-us.apache.org/repos/asf/zest-java/blob/8744a67f/core/api/src/main/java/org/qi4j/api/type/MapType.java ---------------------------------------------------------------------- diff --git a/core/api/src/main/java/org/qi4j/api/type/MapType.java b/core/api/src/main/java/org/qi4j/api/type/MapType.java deleted file mode 100644 index 1cb1700..0000000 --- a/core/api/src/main/java/org/qi4j/api/type/MapType.java +++ /dev/null @@ -1,85 +0,0 @@ -/* - * Copyright (c) 2009, Rickard Ãberg. All Rights Reserved. - * - * 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.api.type; - -import java.lang.reflect.Type; -import java.util.Map; -import org.qi4j.api.util.Classes; - -/** - * Map ValueType. - * <p>This handles instances of Map.</p> - */ -public final class MapType - extends ValueType -{ - - private ValueType keyType; - private ValueType valueType; - private final Serialization.Variant variant; - - public static boolean isMap( Type type ) - { - Class<?> cl = Classes.RAW_CLASS.map( type ); - return Map.class.isAssignableFrom( cl ); - } - - public static MapType of( Class<?> keyType, Class<?> valueType ) - { - return new MapType( Map.class, ValueType.of( keyType ), ValueType.of( valueType ) ); - } - - public static MapType of( Class<?> keyType, Class<?> valueType, Serialization.Variant variant ) - { - return new MapType( Map.class, ValueType.of( keyType ), ValueType.of( valueType ), variant ); - } - - public MapType( Class<?> type, ValueType keyType, ValueType valueType ) - { - this( type, keyType, valueType, Serialization.Variant.entry ); - } - - public MapType( Class<?> type, ValueType keyType, ValueType valueType, Serialization.Variant variant ) - { - super( type ); - this.keyType = keyType; - this.valueType = valueType; - this.variant = variant; - if( !isMap( type ) ) - { - throw new IllegalArgumentException( type + " is not a Map." ); - } - } - - public ValueType keyType() - { - return keyType; - } - - public ValueType valueType() - { - return valueType; - } - - public Serialization.Variant variant() - { - return variant; - } - - @Override - public String toString() - { - return super.toString() + "<" + keyType + "," + valueType + ">"; - } -}
