Repository: zest-sandbox Updated Branches: refs/heads/develop 707b73fe4 -> d4dd9c176
http://git-wip-us.apache.org/repos/asf/zest-sandbox/blob/d4dd9c17/qi4j/libraries/validation/pom.xml ---------------------------------------------------------------------- diff --git a/qi4j/libraries/validation/pom.xml b/qi4j/libraries/validation/pom.xml new file mode 100644 index 0000000..0b0b3da --- /dev/null +++ b/qi4j/libraries/validation/pom.xml @@ -0,0 +1,19 @@ +<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" + xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd"> + <modelVersion>4.0.0</modelVersion> + <parent> + <groupId>org.qi4j.sandbox</groupId> + <artifactId>qi4j-sandbox-libraries</artifactId> + <version>0-SNAPSHOT</version> + </parent> + <groupId>org.qi4j.library</groupId> + <artifactId>org.qi4j.library.validation</artifactId> + <name>Qi4j Library - Validation</name> + + <dependencies> + <dependency> + <groupId>org.qi4j.core</groupId> + <artifactId>org.qi4j.core.api</artifactId> + </dependency> + </dependencies> +</project> http://git-wip-us.apache.org/repos/asf/zest-sandbox/blob/d4dd9c17/qi4j/libraries/validation/src/main/java/org/qi4j/library/validation/AbstractValidatableConcern.java ---------------------------------------------------------------------- diff --git a/qi4j/libraries/validation/src/main/java/org/qi4j/library/validation/AbstractValidatableConcern.java b/qi4j/libraries/validation/src/main/java/org/qi4j/library/validation/AbstractValidatableConcern.java new file mode 100644 index 0000000..4e7297b --- /dev/null +++ b/qi4j/libraries/validation/src/main/java/org/qi4j/library/validation/AbstractValidatableConcern.java @@ -0,0 +1,39 @@ +package org.qi4j.library.validation; + +import org.qi4j.api.concern.ConcernOf; + +import java.util.List; + +/** + * Base class for validation concerns. + */ +public class AbstractValidatableConcern extends ConcernOf<Validatable> + implements Validatable +{ + public List<ValidationMessage> validate() + { + List<ValidationMessage> messages = next.validate(); + Validator validator = new Validator( messages, getResourceBundle() ); + isValid( validator ); + return messages; + } + + public void checkValid() throws ValidationException + { + next.checkValid(); + } + + /** + * Override this method to do your own validations + * + * @param validator used to simplify checks + */ + protected void isValid( Validator validator ) + { + } + + protected String getResourceBundle() + { + return this.getClass().getPackage().getName() + ".package"; + } +} http://git-wip-us.apache.org/repos/asf/zest-sandbox/blob/d4dd9c17/qi4j/libraries/validation/src/main/java/org/qi4j/library/validation/AppliesToAnnotation.java ---------------------------------------------------------------------- diff --git a/qi4j/libraries/validation/src/main/java/org/qi4j/library/validation/AppliesToAnnotation.java b/qi4j/libraries/validation/src/main/java/org/qi4j/library/validation/AppliesToAnnotation.java new file mode 100644 index 0000000..2d8126e --- /dev/null +++ b/qi4j/libraries/validation/src/main/java/org/qi4j/library/validation/AppliesToAnnotation.java @@ -0,0 +1,13 @@ +package org.qi4j.library.validation; + +import java.lang.annotation.ElementType; +import java.lang.annotation.Retention; +import java.lang.annotation.RetentionPolicy; +import java.lang.annotation.Target; + +@Retention( RetentionPolicy.RUNTIME ) +@Target( { ElementType.TYPE } ) +public @interface AppliesToAnnotation +{ + Class value(); +} http://git-wip-us.apache.org/repos/asf/zest-sandbox/blob/d4dd9c17/qi4j/libraries/validation/src/main/java/org/qi4j/library/validation/ChangeValidationConcern.java ---------------------------------------------------------------------- diff --git a/qi4j/libraries/validation/src/main/java/org/qi4j/library/validation/ChangeValidationConcern.java b/qi4j/libraries/validation/src/main/java/org/qi4j/library/validation/ChangeValidationConcern.java new file mode 100644 index 0000000..003d8b6 --- /dev/null +++ b/qi4j/libraries/validation/src/main/java/org/qi4j/library/validation/ChangeValidationConcern.java @@ -0,0 +1,71 @@ +package org.qi4j.library.validation; + +import org.qi4j.api.common.AppliesTo; +import org.qi4j.api.common.AppliesToFilter; +import org.qi4j.api.concern.ConcernOf; +import org.qi4j.api.injection.scope.This; + +import java.lang.reflect.InvocationHandler; +import java.lang.reflect.Method; + +/** + * After invocation, ensure that the validation rules pass. + * <p/> + * This applies to all methods which throws ValidationException + */ +@AppliesTo( ChangeValidationConcern.AppliesTo.class ) +public class ChangeValidationConcern extends ConcernOf<InvocationHandler> + implements InvocationHandler +{ + public static class AppliesTo + implements AppliesToFilter + { + private final Method checkValidMethod; + + public AppliesTo() + { + try + { + checkValidMethod = Validatable.class.getMethod( "checkValid" ); + } + catch( NoSuchMethodException e ) + { + throw new Error( "Invalid interface", e ); + } + } + + public boolean appliesTo( Method method, Class mixin, Class compositeType, Class modelClass ) + { + if( method.equals( checkValidMethod ) ) + { + return false; + } + + Class[] exceptionClasses = method.getExceptionTypes(); + for( Class exceptionClass : exceptionClasses ) + { + if( ValidationException.class.isAssignableFrom( exceptionClass ) ) + { + return true; + } + } + + return false; + } + } + + @This Validatable validatable; + + public Object invoke( Object object, Method method, Object[] objects ) throws Throwable + { + try + { + return next.invoke( object, method, objects ); + } + finally + { + // Ensure that object is still in a valid state + validatable.checkValid(); + } + } +} http://git-wip-us.apache.org/repos/asf/zest-sandbox/blob/d4dd9c17/qi4j/libraries/validation/src/main/java/org/qi4j/library/validation/LifecycleValidationConcern.java ---------------------------------------------------------------------- diff --git a/qi4j/libraries/validation/src/main/java/org/qi4j/library/validation/LifecycleValidationConcern.java b/qi4j/libraries/validation/src/main/java/org/qi4j/library/validation/LifecycleValidationConcern.java new file mode 100755 index 0000000..ad63929 --- /dev/null +++ b/qi4j/libraries/validation/src/main/java/org/qi4j/library/validation/LifecycleValidationConcern.java @@ -0,0 +1,43 @@ +/* + * Copyright (c) 2007, Lan Boon Ping. 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.library.validation; + +import org.qi4j.api.concern.ConcernOf; +import org.qi4j.api.entity.Lifecycle; +import org.qi4j.api.injection.scope.This; + +/** + * This modifier is invoked on Lifecycle mixin invocation. + * Before the next target invocation, this modifier invokes + * {@link Validatable#validate()}. + * <p/> + * JAVADOC: We need to distinguish between Validatable on create, delete and update. + */ +public class LifecycleValidationConcern extends ConcernOf<Lifecycle> + implements Lifecycle +{ + @This Validatable validation; + + public void create() + { + validation.validate(); + + next.create(); + } + + public void remove() + { + next.remove(); + } +} + http://git-wip-us.apache.org/repos/asf/zest-sandbox/blob/d4dd9c17/qi4j/libraries/validation/src/main/java/org/qi4j/library/validation/UoWCallbackValidatableMixin.java ---------------------------------------------------------------------- diff --git a/qi4j/libraries/validation/src/main/java/org/qi4j/library/validation/UoWCallbackValidatableMixin.java b/qi4j/libraries/validation/src/main/java/org/qi4j/library/validation/UoWCallbackValidatableMixin.java new file mode 100644 index 0000000..bbbd71a --- /dev/null +++ b/qi4j/libraries/validation/src/main/java/org/qi4j/library/validation/UoWCallbackValidatableMixin.java @@ -0,0 +1,43 @@ +/* Copyright 2009 Rickard Ãberg. + * + * 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.library.validation; + +import org.qi4j.api.injection.scope.This; +import org.qi4j.api.unitofwork.UnitOfWorkCallback; +import org.qi4j.api.unitofwork.UnitOfWorkCompletionException; + +public class UoWCallbackValidatableMixin + implements UnitOfWorkCallback +{ + @This private Validatable validatable; + + public void beforeCompletion() throws UnitOfWorkCompletionException + { + try + { + validatable.checkValid(); + } + catch( ValidationException e ) + { + throw (UnitOfWorkCompletionException) new UnitOfWorkCompletionException( "Validation failed" ).initCause( e ); + } + } + + public void afterCompletion( UnitOfWorkStatus status ) + { + } +} \ No newline at end of file http://git-wip-us.apache.org/repos/asf/zest-sandbox/blob/d4dd9c17/qi4j/libraries/validation/src/main/java/org/qi4j/library/validation/Validatable.java ---------------------------------------------------------------------- diff --git a/qi4j/libraries/validation/src/main/java/org/qi4j/library/validation/Validatable.java b/qi4j/libraries/validation/src/main/java/org/qi4j/library/validation/Validatable.java new file mode 100644 index 0000000..b6e5bfc --- /dev/null +++ b/qi4j/libraries/validation/src/main/java/org/qi4j/library/validation/Validatable.java @@ -0,0 +1,30 @@ +/* Copyright 2007 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.library.validation; + +import org.qi4j.api.mixin.Mixins; + +import java.util.List; + +@Mixins( ValidatableMixin.class ) +public interface Validatable +{ + List<ValidationMessage> validate(); + + void checkValid() + throws ValidationException; +} http://git-wip-us.apache.org/repos/asf/zest-sandbox/blob/d4dd9c17/qi4j/libraries/validation/src/main/java/org/qi4j/library/validation/ValidatableAbstractComposite.java ---------------------------------------------------------------------- diff --git a/qi4j/libraries/validation/src/main/java/org/qi4j/library/validation/ValidatableAbstractComposite.java b/qi4j/libraries/validation/src/main/java/org/qi4j/library/validation/ValidatableAbstractComposite.java new file mode 100644 index 0000000..58c0463 --- /dev/null +++ b/qi4j/libraries/validation/src/main/java/org/qi4j/library/validation/ValidatableAbstractComposite.java @@ -0,0 +1,15 @@ +package org.qi4j.library.validation; + +import org.qi4j.api.concern.Concerns; +import org.qi4j.api.mixin.Mixins; +import org.qi4j.api.unitofwork.UnitOfWorkCallback; + +/** + * JAVADOC + */ +@Concerns( { ValidatableMessagesConcern.class, ChangeValidationConcern.class } ) +@Mixins( { ValidatableMixin.class, UoWCallbackValidatableMixin.class, ValidationMessagesMixin.class } ) +public interface ValidatableAbstractComposite + extends Validatable, UnitOfWorkCallback +{ +} http://git-wip-us.apache.org/repos/asf/zest-sandbox/blob/d4dd9c17/qi4j/libraries/validation/src/main/java/org/qi4j/library/validation/ValidatableMessagesConcern.java ---------------------------------------------------------------------- diff --git a/qi4j/libraries/validation/src/main/java/org/qi4j/library/validation/ValidatableMessagesConcern.java b/qi4j/libraries/validation/src/main/java/org/qi4j/library/validation/ValidatableMessagesConcern.java new file mode 100644 index 0000000..f44705b --- /dev/null +++ b/qi4j/libraries/validation/src/main/java/org/qi4j/library/validation/ValidatableMessagesConcern.java @@ -0,0 +1,24 @@ +package org.qi4j.library.validation; + +import org.qi4j.api.common.AppliesTo; +import org.qi4j.api.concern.ConcernOf; +import org.qi4j.api.injection.scope.This; + +import java.util.List; + +/** + * JAVADOC + */ +@AppliesTo( Validatable.class ) +public abstract class ValidatableMessagesConcern extends ConcernOf<Validatable> + implements Validatable +{ + @This ValidationMessages messages; + + public List<ValidationMessage> validate() + { + List<ValidationMessage> messageList = next.validate(); + messageList.addAll( messages.getValidationMessages() ); + return messageList; + } +} http://git-wip-us.apache.org/repos/asf/zest-sandbox/blob/d4dd9c17/qi4j/libraries/validation/src/main/java/org/qi4j/library/validation/ValidatableMixin.java ---------------------------------------------------------------------- diff --git a/qi4j/libraries/validation/src/main/java/org/qi4j/library/validation/ValidatableMixin.java b/qi4j/libraries/validation/src/main/java/org/qi4j/library/validation/ValidatableMixin.java new file mode 100644 index 0000000..0bc4cad --- /dev/null +++ b/qi4j/libraries/validation/src/main/java/org/qi4j/library/validation/ValidatableMixin.java @@ -0,0 +1,42 @@ +/* Copyright 2007 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.library.validation; + +import org.qi4j.api.injection.scope.This; + +import java.util.ArrayList; +import java.util.List; + +public class ValidatableMixin + implements Validatable +{ + @This Validatable validatable; + + public List<ValidationMessage> validate() + { + return new ArrayList<ValidationMessage>(); + } + + public void checkValid() throws ValidationException + { + List<ValidationMessage> messages = validatable.validate(); + if( messages.size() > 0 ) + { + throw new ValidationException( messages ); + } + } +} http://git-wip-us.apache.org/repos/asf/zest-sandbox/blob/d4dd9c17/qi4j/libraries/validation/src/main/java/org/qi4j/library/validation/ValidationException.java ---------------------------------------------------------------------- diff --git a/qi4j/libraries/validation/src/main/java/org/qi4j/library/validation/ValidationException.java b/qi4j/libraries/validation/src/main/java/org/qi4j/library/validation/ValidationException.java new file mode 100755 index 0000000..cc2a600 --- /dev/null +++ b/qi4j/libraries/validation/src/main/java/org/qi4j/library/validation/ValidationException.java @@ -0,0 +1,62 @@ +/* + * Copyright (c) 2007, Lan Boon Ping. 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.library.validation; + +import java.util.ArrayList; +import java.util.List; + +/** + * Default exception for validation error + */ +public class ValidationException + extends RuntimeException +{ + List<ValidationMessage> messages; + + public ValidationException( String string ) + { + messages = new ArrayList<ValidationMessage>(); + messages.add( new ValidationMessage( string, ValidationMessage.Severity.ERROR ) ); + } + + public ValidationException( List<ValidationMessage> messages ) + { + this.messages = messages; + } + + public List<ValidationMessage> getMessages() + { + return messages; + } + + @Override public String getMessage() + { + return getLocalizedMessage(); + } + + + @Override public String getLocalizedMessage() + { + StringBuffer buf = new StringBuffer(); + for( ValidationMessage message : messages ) + { + if( buf.length() != 0 ) + { + buf.append( "\n" ); + } + buf.append( message.getMessage() ); + } + + return buf.toString(); + } +} http://git-wip-us.apache.org/repos/asf/zest-sandbox/blob/d4dd9c17/qi4j/libraries/validation/src/main/java/org/qi4j/library/validation/ValidationMessage.java ---------------------------------------------------------------------- diff --git a/qi4j/libraries/validation/src/main/java/org/qi4j/library/validation/ValidationMessage.java b/qi4j/libraries/validation/src/main/java/org/qi4j/library/validation/ValidationMessage.java new file mode 100644 index 0000000..bced651 --- /dev/null +++ b/qi4j/libraries/validation/src/main/java/org/qi4j/library/validation/ValidationMessage.java @@ -0,0 +1,106 @@ +/* Copyright 2007 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.library.validation; + +import java.io.Serializable; +import java.text.MessageFormat; +import java.util.Locale; +import java.util.ResourceBundle; + +public class ValidationMessage + implements Serializable +{ + private String resourceKey; + private Object[] arguments; + + private String resourceBundle; + private Severity severity; + + public ValidationMessage( String resourceKey, Severity severity ) + { + this( resourceKey, null, severity ); + } + + public ValidationMessage( String resourceKey, String resourceBundle, Severity severity, Object... arguments ) + { + this.resourceKey = resourceKey; + this.arguments = arguments; + this.resourceBundle = resourceBundle; + this.severity = severity; + } + + public String getResourceKey() + { + return resourceKey; + } + + public Object[] getArguments() + { + return arguments; + } + + public String getResourceBundle() + { + return resourceBundle; + } + + public Severity getSeverity() + { + return severity; + } + + public String getMessage() + { + return getMessage( Locale.getDefault() ); + } + + public String getMessage( Locale aLocale ) + { + String resource; + if( resourceBundle != null ) + { + // Look up the message from a bundle + ResourceBundle bundle = ResourceBundle.getBundle( resourceBundle, aLocale ); + resource = bundle.getString( resourceKey ); + } + else + { + // Don't use i18n + resource = resourceKey; + } + + if( arguments == null ) + { + return resource; + } + else + { + return MessageFormat.format( resource, arguments ); + } + } + + + @Override public String toString() + { + return getMessage(); + } + + public enum Severity + { + INFO, WARNING, ERROR + } +} http://git-wip-us.apache.org/repos/asf/zest-sandbox/blob/d4dd9c17/qi4j/libraries/validation/src/main/java/org/qi4j/library/validation/ValidationMessages.java ---------------------------------------------------------------------- diff --git a/qi4j/libraries/validation/src/main/java/org/qi4j/library/validation/ValidationMessages.java b/qi4j/libraries/validation/src/main/java/org/qi4j/library/validation/ValidationMessages.java new file mode 100644 index 0000000..5c0c3b1 --- /dev/null +++ b/qi4j/libraries/validation/src/main/java/org/qi4j/library/validation/ValidationMessages.java @@ -0,0 +1,17 @@ +package org.qi4j.library.validation; + +import java.util.Collection; + +/** + * JAVADOC + */ +public interface ValidationMessages +{ + void addValidationMessage( ValidationMessage validationMessage ); + + void removeValidationMessage( String message ); + + Collection<ValidationMessage> getValidationMessages(); + + void clearValidationMessages(); +} http://git-wip-us.apache.org/repos/asf/zest-sandbox/blob/d4dd9c17/qi4j/libraries/validation/src/main/java/org/qi4j/library/validation/ValidationMessagesMixin.java ---------------------------------------------------------------------- diff --git a/qi4j/libraries/validation/src/main/java/org/qi4j/library/validation/ValidationMessagesMixin.java b/qi4j/libraries/validation/src/main/java/org/qi4j/library/validation/ValidationMessagesMixin.java new file mode 100644 index 0000000..09964f9 --- /dev/null +++ b/qi4j/libraries/validation/src/main/java/org/qi4j/library/validation/ValidationMessagesMixin.java @@ -0,0 +1,34 @@ +package org.qi4j.library.validation; + +import java.util.Collection; +import java.util.HashMap; +import java.util.Map; + +/** + * JAVADOC + */ +public class ValidationMessagesMixin + implements ValidationMessages +{ + Map<String, ValidationMessage> messages = new HashMap<String, ValidationMessage>(); + + public void addValidationMessage( ValidationMessage validationMessage ) + { + messages.put( validationMessage.getResourceKey(), validationMessage ); + } + + public void removeValidationMessage( String message ) + { + messages.remove( message ); + } + + public Collection<ValidationMessage> getValidationMessages() + { + return messages.values(); + } + + public void clearValidationMessages() + { + messages.clear(); + } +} http://git-wip-us.apache.org/repos/asf/zest-sandbox/blob/d4dd9c17/qi4j/libraries/validation/src/main/java/org/qi4j/library/validation/Validator.java ---------------------------------------------------------------------- diff --git a/qi4j/libraries/validation/src/main/java/org/qi4j/library/validation/Validator.java b/qi4j/libraries/validation/src/main/java/org/qi4j/library/validation/Validator.java new file mode 100644 index 0000000..d9ebf28 --- /dev/null +++ b/qi4j/libraries/validation/src/main/java/org/qi4j/library/validation/Validator.java @@ -0,0 +1,42 @@ +package org.qi4j.library.validation; + +import java.util.List; + +/** + * JAVADOC + */ +public class Validator +{ + List<ValidationMessage> messages; + String resourceBundle; + + public Validator( List<ValidationMessage> messages, String resourceBundle ) + { + this.messages = messages; + this.resourceBundle = resourceBundle; + } + + public void error( boolean test, String resourceKey, Object... arguments ) + { + if( test ) + { + messages.add( new ValidationMessage( resourceKey, resourceBundle, ValidationMessage.Severity.ERROR, arguments ) ); + } + } + + public void warn( boolean test, String resourceKey, Object... arguments ) + { + if( test ) + { + messages.add( new ValidationMessage( resourceKey, resourceBundle, ValidationMessage.Severity.WARNING, arguments ) ); + } + } + + public void info( boolean test, String resourceKey, Object... arguments ) + { + if( test ) + { + messages.add( new ValidationMessage( resourceKey, resourceBundle, ValidationMessage.Severity.INFO, arguments ) ); + } + } +} http://git-wip-us.apache.org/repos/asf/zest-sandbox/blob/d4dd9c17/qi4j/pom.xml ---------------------------------------------------------------------- diff --git a/qi4j/pom.xml b/qi4j/pom.xml new file mode 100644 index 0000000..3bce8a4 --- /dev/null +++ b/qi4j/pom.xml @@ -0,0 +1,87 @@ +<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" + xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> + <modelVersion>4.0.0</modelVersion> + <groupId>org.qi4j.sandbox</groupId> + <artifactId>qi4j-sandbox</artifactId> + <packaging>pom</packaging> + <version>0-SNAPSHOT</version> + <name>Qi4j Sandbox - Build POM</name> + + <modules> + <module>libraries</module> + <module>extensions</module> + </modules> + + <repositories> + <repository> + <id>qi4j-releases</id> + <url>https://repository-qi4j.forge.cloudbees.com/release/</url> + </repository> + <repository> + <id>qi4j-snapshots</id> + <url>https://repository-qi4j.forge.cloudbees.com/snapshot/</url> + <releases><enabled>false</enabled></releases> + <snapshots><enabled>true</enabled></snapshots> + </repository> + </repositories> + + <properties> + <version.qi4j>2.0</version.qi4j> + </properties> + + <dependencyManagement> + <dependencies> + + <dependency> + <groupId>org.qi4j.core</groupId> + <artifactId>org.qi4j.core.api</artifactId> + <version>${version.qi4j}</version> + </dependency> + <dependency> + <groupId>org.qi4j.core</groupId> + <artifactId>org.qi4j.core.spi</artifactId> + <version>${version.qi4j}</version> + </dependency> + <dependency> + <groupId>org.qi4j.core</groupId> + <artifactId>org.qi4j.core.bootstrap</artifactId> + <version>${version.qi4j}</version> + </dependency> + + <dependency> + <groupId>org.qi4j.library</groupId> + <artifactId>org.qi4j.library.locking</artifactId> + <version>${version.qi4j}</version> + </dependency> + + <dependency> + <groupId>org.slf4j</groupId> + <artifactId>slf4j-api</artifactId> + <version>1.6.1</version> + </dependency> + + <dependency> + <groupId>org.qi4j.core</groupId> + <artifactId>org.qi4j.core.runtime</artifactId> + <scope>runtime</scope> + <version>${version.qi4j}</version> + </dependency> + + <dependency> + <groupId>org.qi4j.core</groupId> + <artifactId>org.qi4j.core.testsupport</artifactId> + <version>${version.qi4j}</version> + <scope>test</scope> + </dependency> + + <dependency> + <groupId>junit</groupId> + <artifactId>junit</artifactId> + <version>4.8.1</version> + <scope>test</scope> + </dependency> + + </dependencies> + </dependencyManagement> + +</project>
