You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@polygene.apache.org by ni...@apache.org on 2015/07/30 21:48:51 UTC

[52/80] zest-java git commit: Stage 2 of the namespace change. Bulk of documentation fixed.

http://git-wip-us.apache.org/repos/asf/zest-java/blob/fc41bb18/tools/qidea/src/main/java/org/qi4j/ide/plugin/idea/mixins/common/Qi4jMixinUtil.java
----------------------------------------------------------------------
diff --git a/tools/qidea/src/main/java/org/qi4j/ide/plugin/idea/mixins/common/Qi4jMixinUtil.java b/tools/qidea/src/main/java/org/qi4j/ide/plugin/idea/mixins/common/Qi4jMixinUtil.java
deleted file mode 100644
index be08dde..0000000
--- a/tools/qidea/src/main/java/org/qi4j/ide/plugin/idea/mixins/common/Qi4jMixinUtil.java
+++ /dev/null
@@ -1,194 +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.ide.plugin.idea.mixins.common;
-
-import com.intellij.openapi.project.Project;
-import com.intellij.psi.*;
-import com.intellij.psi.codeStyle.JavaCodeStyleManager;
-import org.jetbrains.annotations.NotNull;
-import org.jetbrains.annotations.Nullable;
-
-import java.util.List;
-import java.util.Set;
-
-import static com.intellij.codeInsight.AnnotationUtil.findAnnotation;
-import static java.util.Collections.emptyList;
-import static java.util.Collections.emptySet;
-import static org.qi4j.ide.plugin.idea.common.psi.PsiAnnotationUtil.getAnnotationDefaultParameterValue;
-import static org.qi4j.ide.plugin.idea.common.psi.PsiAnnotationUtil.getClassReference;
-import static org.qi4j.ide.plugin.idea.common.psi.PsiClassUtil.getExtendsDeep;
-import static org.qi4j.ide.plugin.idea.common.psi.PsiClassUtil.getPSIClass;
-import static org.qi4j.ide.plugin.idea.concerns.common.Qi4jConcernUtil.isAConcern;
-import static org.qi4j.ide.plugin.idea.mixins.common.Qi4jMixinConstants.QUALIFIED_NAME_MIXINS;
-import static org.qi4j.ide.plugin.idea.sideEffects.common.Qi4jSideEffectUtil.isASideEffect;
-
-/**
- * @author edward.yakop@gmail.com
- * @since 0.1
- */
-public final class Qi4jMixinUtil
-{
-    /**
-     * Get all valid mixin types of given the {@code psiClass} argument.
-     *
-     * @param psiClass The psi class to check.
-     * @return all vlaid mixin types of the given {@code psiClass} argument.
-     * @since 0.1
-     */
-    @NotNull
-    public static Set<PsiClass> getAllValidMixinTypes( @NotNull PsiClass psiClass )
-    {
-        PsiAnnotation mixinsAnnotation = getMixinsAnnotation( psiClass );
-        if( mixinsAnnotation == null )
-        {
-            return emptySet();
-        }
-
-        Set<PsiClass> validMixinsType = getExtendsDeep( psiClass );
-        validMixinsType.add( psiClass );
-        return validMixinsType;
-    }
-
-    @NotNull
-    public static List<PsiAnnotationMemberValue> getMixinsAnnotationValue( @NotNull PsiClass psiClass )
-    {
-        return getMixinsAnnotationValue( getMixinsAnnotation( psiClass ) );
-    }
-
-    @NotNull
-    public static List<PsiAnnotationMemberValue> getMixinsAnnotationValue( @Nullable PsiAnnotation mixinsAnnotation )
-    {
-        if( mixinsAnnotation == null )
-        {
-            return emptyList();
-        }
-
-        String mixinsQualifiedName = mixinsAnnotation.getQualifiedName();
-        if( !QUALIFIED_NAME_MIXINS.equals( mixinsQualifiedName ) )
-        {
-            return emptyList();
-        }
-
-        return getAnnotationDefaultParameterValue( mixinsAnnotation );
-    }
-
-    @Nullable
-    public static PsiAnnotation getMixinsAnnotation( PsiElement element )
-    {
-        PsiClass psiClass = getPSIClass( element );
-        if( psiClass == null )
-        {
-            return null;
-        }
-
-        return findAnnotation( psiClass, QUALIFIED_NAME_MIXINS );
-    }
-
-    @NotNull
-    public static PsiAnnotation addOrReplaceMixinAnnotation( @NotNull PsiModifierListOwner modifierListOwner,
-                                                             @NotNull PsiClass mixinClassToAdd )
-    {
-        Project project = modifierListOwner.getProject();
-        JavaPsiFacade psiFacade = JavaPsiFacade.getInstance( project );
-        PsiElementFactory factory = psiFacade.getElementFactory();
-        PsiAnnotation existingMixinsAnnotation = findAnnotation( modifierListOwner, QUALIFIED_NAME_MIXINS );
-
-        boolean isReplace = false;
-        PsiAnnotation newMixinsAnnotation;
-        if( existingMixinsAnnotation != null )
-        {
-            // Check duplicate
-            List<PsiAnnotationMemberValue> mixinsValues = getMixinsAnnotationValue( existingMixinsAnnotation );
-            for( PsiAnnotationMemberValue mixinValue : mixinsValues )
-            {
-                PsiJavaCodeReferenceElement mixinClassReference = getMixinClassReference( mixinValue );
-                if( mixinClassReference == null )
-                {
-                    continue;
-                }
-
-                PsiElement mixinClass = mixinClassReference.resolve();
-                if( mixinClassToAdd.equals( mixinClass ) )
-                {
-                    return existingMixinsAnnotation;
-                }
-            }
-
-            isReplace = true;
-        }
-
-        String mixinsAnnotationText = createMixinsAnnotationText( existingMixinsAnnotation, mixinClassToAdd );
-        newMixinsAnnotation = factory.createAnnotationFromText( mixinsAnnotationText, modifierListOwner );
-
-        if( isReplace )
-        {
-            // Replace @Mixins instead
-            existingMixinsAnnotation.replace( newMixinsAnnotation );
-        }
-        else
-        {
-            // @Mixins doesn't exists, add it as first child
-            PsiModifierList modifierList = modifierListOwner.getModifierList();
-            modifierList.addBefore( newMixinsAnnotation, modifierList.getFirstChild() );
-        }
-
-        // Shorten all class references if possible
-        JavaCodeStyleManager codeStyleManager = JavaCodeStyleManager.getInstance( project );
-        codeStyleManager.shortenClassReferences( newMixinsAnnotation );
-
-        return newMixinsAnnotation;
-    }
-
-    @NotNull
-    private static String createMixinsAnnotationText( @Nullable PsiAnnotation mixinsAnnotationBase,
-                                                      @NotNull PsiClass mixinClassToAdd )
-    {
-        StringBuilder annotationTextBuilder = new StringBuilder();
-        annotationTextBuilder.append( "@" ).append( QUALIFIED_NAME_MIXINS ).append( "( {" );
-        List<PsiAnnotationMemberValue> mixinsValues = getMixinsAnnotationValue( mixinsAnnotationBase );
-        for( PsiAnnotationMemberValue mixinValue : mixinsValues )
-        {
-            annotationTextBuilder.append( mixinValue.getText() ).append( ", " );
-        }
-        annotationTextBuilder.append( mixinClassToAdd.getQualifiedName() ).append( ".class" );
-        annotationTextBuilder.append( "} )" );
-
-        return annotationTextBuilder.toString();
-    }
-
-
-    @Nullable
-    public static PsiJavaCodeReferenceElement getMixinClassReference( @NotNull PsiAnnotationMemberValue value )
-    {
-        return getClassReference( value );
-    }
-
-    /**
-     * Validate whether psiClass is a mixin.
-     *
-     * @param psiClass psi class to check.
-     * @return {@code true} if psiClass is a mixin, {@code false} otherwise.
-     */
-    public static boolean isAMixin( @NotNull PsiClass psiClass )
-    {
-        return !( psiClass.isInterface() || isAConcern( psiClass ) || isASideEffect( psiClass ) );
-    }
-
-    private Qi4jMixinUtil()
-    {
-    }
-}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/zest-java/blob/fc41bb18/tools/qidea/src/main/java/org/qi4j/ide/plugin/idea/mixins/inspections/MixinImplementsMixinType.java
----------------------------------------------------------------------
diff --git a/tools/qidea/src/main/java/org/qi4j/ide/plugin/idea/mixins/inspections/MixinImplementsMixinType.java b/tools/qidea/src/main/java/org/qi4j/ide/plugin/idea/mixins/inspections/MixinImplementsMixinType.java
deleted file mode 100644
index 2334cec..0000000
--- a/tools/qidea/src/main/java/org/qi4j/ide/plugin/idea/mixins/inspections/MixinImplementsMixinType.java
+++ /dev/null
@@ -1,188 +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.ide.plugin.idea.mixins.inspections;
-
-import com.intellij.codeInspection.InspectionManager;
-import com.intellij.codeInspection.ProblemDescriptor;
-import com.intellij.openapi.project.Project;
-import com.intellij.psi.PsiAnnotationMemberValue;
-import com.intellij.psi.PsiClass;
-import com.intellij.psi.PsiJavaCodeReferenceElement;
-import org.jetbrains.annotations.NotNull;
-import org.qi4j.ide.plugin.idea.common.inspections.AbstractFix;
-import org.qi4j.ide.plugin.idea.common.inspections.AbstractInspection;
-
-import java.util.LinkedList;
-import java.util.List;
-import java.util.Set;
-
-import static com.intellij.codeInspection.ProblemHighlightType.GENERIC_ERROR_OR_WARNING;
-import static org.qi4j.ide.plugin.idea.common.resource.Qi4jResourceBundle.message;
-import static org.qi4j.ide.plugin.idea.concerns.common.Qi4jConcernUtil.isAConcern;
-import static org.qi4j.ide.plugin.idea.mixins.common.Qi4jMixinUtil.*;
-import static org.qi4j.ide.plugin.idea.sideEffects.common.Qi4jSideEffectUtil.isASideEffect;
-
-/**
- * @author edward.yakop@gmail.com
- * @since 0.1
- */
-public final class MixinImplementsMixinType extends AbstractInspection
-{
-    @NotNull
-    protected final String resourceBundlePrefixId()
-    {
-        return "mixin.implements.mixin.type";
-    }
-
-    @NotNull
-    public final String getShortName()
-    {
-        return "MixinImplementsMixinType";
-    }
-
-    @Override
-    public final ProblemDescriptor[] checkClass( @NotNull PsiClass psiClass,
-                                                 @NotNull InspectionManager manager,
-                                                 boolean isOnTheFly )
-    {
-        // If psiClass is not an interface, ignore
-        if( !psiClass.isInterface() )
-        {
-            return null;
-        }
-
-        // If @Mixins annotation is empty, ignore
-        List<PsiAnnotationMemberValue> mixinAnnotationValues = getMixinsAnnotationValue( psiClass );
-        if( mixinAnnotationValues.isEmpty() )
-        {
-            return null;
-        }
-
-        // Get all valid mixin type
-        Set<PsiClass> validMixinsType = getAllValidMixinTypes( psiClass );
-        if( validMixinsType.isEmpty() )
-        {
-            return null;
-        }
-
-        // For each mixin
-        List<ProblemDescriptor> problems = new LinkedList<ProblemDescriptor>();
-        for( PsiAnnotationMemberValue mixinAnnotationValue : mixinAnnotationValues )
-        {
-            PsiJavaCodeReferenceElement mixinClassReference = getMixinClassReference( mixinAnnotationValue );
-
-            // If it's not a class reference, ignore
-            if( mixinClassReference == null )
-            {
-                continue;
-            }
-
-            // If class reference can't be resolved, ignore
-            PsiClass mixinClass = (PsiClass) mixinClassReference.resolve();
-            if( mixinClass == null )
-            {
-                continue;
-            }
-
-            String mixinQualifiedName = mixinClass.getQualifiedName();
-
-            boolean isMixinsDeclarationValid = false;
-            String message = "";
-            if( mixinClass.isInterface() )
-            {
-                // Mixin can't be an interface
-                message = message( "mixin.implements.mixin.type.error.mixin.is.an.interface", mixinQualifiedName );
-            }
-            else if( isAConcern( mixinClass ) )
-            {
-                // Mixin can't be a concern
-                message = message( "mixin.implements.mixin.type.error.mixin.is.a.concern", mixinQualifiedName );
-            }
-            else if( isASideEffect( mixinClass ) )
-            {
-                // Mixin can't be a side effect
-                message = message( "mixin.implements.mixin.type.error.mixin.is.a.side.effect", mixinQualifiedName );
-            }
-            else
-            {
-                // If doesn't implement any mixin type, it's a problem
-                if( !isImplementValidMixinType( mixinClass, validMixinsType ) )
-                {
-                    message = message(
-                        "mixin.implements.mixin.type.error.does.not.implement.any.mixin.type",
-                        mixinQualifiedName,
-                        psiClass.getQualifiedName()
-                    );
-                }
-                else
-                {
-                    isMixinsDeclarationValid = true;
-                }
-            }
-
-            if( !isMixinsDeclarationValid )
-            {
-                ProblemDescriptor problemDescriptor = createProblemDescriptor(
-                    manager, mixinAnnotationValue, mixinClassReference, message );
-                problems.add( problemDescriptor );
-            }
-        }
-
-        return problems.toArray( new ProblemDescriptor[problems.size()] );
-    }
-
-    private boolean isImplementValidMixinType( PsiClass mixinClass, Set<PsiClass> validMixinsType )
-    {
-        for( PsiClass validMixinTypeClass : validMixinsType )
-        {
-            if( mixinClass.isInheritor( validMixinTypeClass, true ) )
-            {
-                return true;
-            }
-        }
-
-        return false;
-    }
-
-    private ProblemDescriptor createProblemDescriptor( @NotNull InspectionManager manager,
-                                                       @NotNull PsiAnnotationMemberValue mixinAnnotationValue,
-                                                       @NotNull PsiJavaCodeReferenceElement mixinClassReference,
-                                                       @NotNull String message )
-    {
-        RemoveInvalidMixinClassReferenceFix fix = new RemoveInvalidMixinClassReferenceFix(
-            mixinAnnotationValue, mixinClassReference
-        );
-        return manager.createProblemDescriptor( mixinAnnotationValue, message, fix, GENERIC_ERROR_OR_WARNING );
-    }
-
-    private static class RemoveInvalidMixinClassReferenceFix extends AbstractFix
-    {
-        private final PsiAnnotationMemberValue mixinClassAnnotationValue;
-
-        public RemoveInvalidMixinClassReferenceFix( @NotNull PsiAnnotationMemberValue mixinClassAnnotationValue,
-                                                    @NotNull PsiJavaCodeReferenceElement mixinClassReference )
-        {
-            super( message( "mixin.implements.mixin.type.fix.remove.class.reference", mixinClassReference.getQualifiedName() ) );
-            this.mixinClassAnnotationValue = mixinClassAnnotationValue;
-        }
-
-        public final void applyFix( @NotNull Project project, @NotNull ProblemDescriptor descriptor )
-        {
-            mixinClassAnnotationValue.delete();
-        }
-    }
-}

http://git-wip-us.apache.org/repos/asf/zest-java/blob/fc41bb18/tools/qidea/src/main/java/org/qi4j/ide/plugin/idea/mixins/inspections/MixinsAnnotationDeclaredOnMixinType.java
----------------------------------------------------------------------
diff --git a/tools/qidea/src/main/java/org/qi4j/ide/plugin/idea/mixins/inspections/MixinsAnnotationDeclaredOnMixinType.java b/tools/qidea/src/main/java/org/qi4j/ide/plugin/idea/mixins/inspections/MixinsAnnotationDeclaredOnMixinType.java
deleted file mode 100644
index 6339ce8..0000000
--- a/tools/qidea/src/main/java/org/qi4j/ide/plugin/idea/mixins/inspections/MixinsAnnotationDeclaredOnMixinType.java
+++ /dev/null
@@ -1,90 +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.ide.plugin.idea.mixins.inspections;
-
-import com.intellij.codeInspection.InspectionManager;
-import com.intellij.codeInspection.ProblemDescriptor;
-import com.intellij.openapi.project.Project;
-import com.intellij.psi.PsiAnnotation;
-import com.intellij.psi.PsiAnnotationMemberValue;
-import com.intellij.psi.PsiClass;
-import org.jetbrains.annotations.NotNull;
-import org.qi4j.ide.plugin.idea.common.inspections.AbstractFix;
-import org.qi4j.ide.plugin.idea.common.inspections.AbstractInspection;
-
-import static com.intellij.codeInspection.ProblemHighlightType.GENERIC_ERROR_OR_WARNING;
-import static org.qi4j.ide.plugin.idea.common.resource.Qi4jResourceBundle.message;
-import static org.qi4j.ide.plugin.idea.mixins.common.Qi4jMixinUtil.getMixinsAnnotation;
-
-/**
- * @author edward.yakop@gmail.com
- * @since 0.1
- */
-public final class MixinsAnnotationDeclaredOnMixinType extends AbstractInspection
-{
-    @NotNull
-    public final String getShortName()
-    {
-        return "MixinsAnnotationDeclaredOnMixinType";
-    }
-
-    @NotNull
-    protected final String resourceBundlePrefixId()
-    {
-        return "mixins.annotation.declared.on.mixin.type";
-    }
-
-    @Override
-    public ProblemDescriptor[] checkClass( @NotNull PsiClass psiClass,
-                                           @NotNull InspectionManager manager,
-                                           boolean isOnTheFly )
-    {
-        PsiAnnotation mixinsAnnotation = getMixinsAnnotation( psiClass );
-        if( mixinsAnnotation == null )
-        {
-            return null;
-        }
-
-        if( psiClass.isInterface() )
-        {
-            return null;
-        }
-
-        String message = message( "mixins.annotation.declared.on.mixin.type.error.declared.on.class" );
-        RemoveInvalidMixinClassReferenceFix fix = new RemoveInvalidMixinClassReferenceFix( mixinsAnnotation );
-        ProblemDescriptor problemDescriptor = manager.createProblemDescriptor( mixinsAnnotation, message, fix,
-                                                                               GENERIC_ERROR_OR_WARNING );
-        return new ProblemDescriptor[]{ problemDescriptor };
-
-    }
-
-    private static class RemoveInvalidMixinClassReferenceFix extends AbstractFix
-    {
-        private final PsiAnnotationMemberValue mixinsAnnotation;
-
-        public RemoveInvalidMixinClassReferenceFix( @NotNull PsiAnnotationMemberValue mixinsAnnotation )
-        {
-            super( message( "mixins.annotation.declared.on.mixin.type.fix.remove.mixins.annotation" ) );
-            this.mixinsAnnotation = mixinsAnnotation;
-        }
-
-        public final void applyFix( @NotNull Project project, @NotNull ProblemDescriptor descriptor )
-        {
-            mixinsAnnotation.delete();
-        }
-    }
-}

http://git-wip-us.apache.org/repos/asf/zest-java/blob/fc41bb18/tools/qidea/src/main/java/org/qi4j/ide/plugin/idea/sideEffects/common/Qi4jSideEffectConstants.java
----------------------------------------------------------------------
diff --git a/tools/qidea/src/main/java/org/qi4j/ide/plugin/idea/sideEffects/common/Qi4jSideEffectConstants.java b/tools/qidea/src/main/java/org/qi4j/ide/plugin/idea/sideEffects/common/Qi4jSideEffectConstants.java
deleted file mode 100644
index 5089f29..0000000
--- a/tools/qidea/src/main/java/org/qi4j/ide/plugin/idea/sideEffects/common/Qi4jSideEffectConstants.java
+++ /dev/null
@@ -1,33 +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.ide.plugin.idea.sideEffects.common;
-
-/**
- * @author edward.yakop@gmail.com
- * @since 0.1
- */
-public final class Qi4jSideEffectConstants
-{
-    public static final String QUALIFIED_NAME_SIDE_EFFECTS = "org.qi4j.api.sideeffect.SideEffects";
-
-    public static final String QUALIFIED_NAME_SIDE_EFFECT_OF = "org.qi4j.api.sideeffect.SideEffectOf";
-    public static final String QUALIFIED_NAME_GENERIC_SIDE_EFFECT = "org.qi4j.api.sideeffect.GenericSideEffect";
-
-    private Qi4jSideEffectConstants()
-    {
-    }
-}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/zest-java/blob/fc41bb18/tools/qidea/src/main/java/org/qi4j/ide/plugin/idea/sideEffects/common/Qi4jSideEffectUtil.java
----------------------------------------------------------------------
diff --git a/tools/qidea/src/main/java/org/qi4j/ide/plugin/idea/sideEffects/common/Qi4jSideEffectUtil.java b/tools/qidea/src/main/java/org/qi4j/ide/plugin/idea/sideEffects/common/Qi4jSideEffectUtil.java
deleted file mode 100644
index 43912d1..0000000
--- a/tools/qidea/src/main/java/org/qi4j/ide/plugin/idea/sideEffects/common/Qi4jSideEffectUtil.java
+++ /dev/null
@@ -1,186 +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.ide.plugin.idea.sideEffects.common;
-
-import com.intellij.openapi.project.Project;
-import com.intellij.psi.*;
-import com.intellij.psi.search.GlobalSearchScope;
-import org.jetbrains.annotations.NotNull;
-import org.jetbrains.annotations.Nullable;
-
-import java.util.Collections;
-import java.util.List;
-
-import static com.intellij.codeInsight.AnnotationUtil.findAnnotation;
-import static java.util.Collections.emptyList;
-import static org.qi4j.ide.plugin.idea.common.psi.PsiAnnotationUtil.getAnnotationDefaultParameterValue;
-import static org.qi4j.ide.plugin.idea.common.psi.PsiAnnotationUtil.getClassReference;
-import static org.qi4j.ide.plugin.idea.common.psi.PsiClassUtil.getPSIClass;
-import static org.qi4j.ide.plugin.idea.common.psi.search.GlobalSearchScopeUtil.determineSearchScope;
-import static org.qi4j.ide.plugin.idea.sideEffects.common.Qi4jSideEffectConstants.*;
-
-/**
- * @author edward.yakop@gmail.com
- * @since 0.1
- */
-public final class Qi4jSideEffectUtil
-{
-    /**
-     * @param searchContext Search context.
-     * @return {@code GenericSideEffect} class given the search context. {@code null} if not found.
-     * @since 0.1
-     */
-    @Nullable
-    public static PsiClass getGenericSideEffectClass( @NotNull PsiElement searchContext )
-    {
-        Project project = searchContext.getProject();
-        GlobalSearchScope searchScope = determineSearchScope( searchContext );
-        return getGenericSideEffectClass( project, searchScope );
-    }
-
-    /**
-     * @param project project.
-     * @param scope   search scope.
-     * @return {@code GenericSideEffect} class given {@code project} and {@code scope} parameters.
-     *         Returns {@code null} if not found.
-     * @since 0.1
-     */
-    @Nullable
-    public static PsiClass getGenericSideEffectClass( @NotNull Project project,
-                                                      @Nullable GlobalSearchScope scope )
-    {
-        JavaPsiFacade psiFacade = JavaPsiFacade.getInstance( project );
-        return scope == null ? null : psiFacade.findClass( QUALIFIED_NAME_GENERIC_SIDE_EFFECT, scope );
-    }
-
-    /**
-     * @param searchContext Search context.
-     * @return {@code SideEffectOf} class given the search context. {@code null} if not found.
-     * @since 0.1
-     */
-    @Nullable
-    public static PsiClass getSideEffectOfClass( @NotNull PsiElement searchContext )
-    {
-        Project project = searchContext.getProject();
-        GlobalSearchScope searchScope = determineSearchScope( searchContext );
-        return getSideEffectOfClass( project, searchScope );
-    }
-
-
-    /**
-     * @param project project.
-     * @param scope   search scope.
-     * @return {@code SideEffectOf} class given {@code project} and {@code scope} parameters.
-     *         Returns {@code null} if not found.
-     * @since 0.1
-     */
-    @Nullable
-    public static PsiClass getSideEffectOfClass( @NotNull Project project,
-                                                 @Nullable GlobalSearchScope scope )
-    {
-        JavaPsiFacade psiFacade = JavaPsiFacade.getInstance( project );
-        return scope == null ? null : psiFacade.findClass( QUALIFIED_NAME_SIDE_EFFECT_OF, scope );
-    }
-
-    /**
-     * @param elementWithinJavaClass element within java class.
-     * @return {@code @SideEffects} annotation declaration of the class that contains the element.
-     *         Returns {@code null} if not found, or {@code element} is an invalid context.
-     * @since 0.1
-     */
-    @Nullable
-    public static PsiAnnotation getSideEffectsAnnotation( @NotNull PsiElement elementWithinJavaClass )
-    {
-        PsiClass psiClass = getPSIClass( elementWithinJavaClass );
-        return findAnnotation( psiClass, QUALIFIED_NAME_SIDE_EFFECTS );
-    }
-
-    /**
-     * @param annotation annotation to process.
-     * @return {@code @SideEffects} annotation value. Returns {@link Collections#emptyList()} if {@code annotation} is
-     *         {@code null} or annotation is not a {@code @SideEffects} annotation.
-     * @since 0.1
-     */
-    @NotNull
-    public static List<PsiAnnotationMemberValue> getSideEffectsAnnotationValue( @Nullable PsiAnnotation annotation )
-    {
-        if( annotation == null )
-        {
-            return emptyList();
-        }
-
-        String concernsQualifiedName = annotation.getQualifiedName();
-        if( !QUALIFIED_NAME_SIDE_EFFECTS.equals( concernsQualifiedName ) )
-        {
-            return emptyList();
-        }
-
-        return getAnnotationDefaultParameterValue( annotation );
-    }
-
-    /**
-     * @param value annotation member value.
-     * @return Side effect class reference given the {@code value} parameter. Returns {@code null} if it's not a
-     *         class reference.
-     * @since 0.1
-     */
-    @Nullable
-    public static PsiJavaCodeReferenceElement getSideEffectClassReference( @NotNull PsiAnnotationMemberValue value )
-    {
-        return getClassReference( value );
-    }
-
-    /**
-     * Returns a {@code boolean} indicator whether the specified {@code psiClass} is a side effect.
-     *
-     * @param psiClass class to check.
-     * @return {@code true} if {@code psiClass} is a side effect, {@code false} otherwise.
-     * @since 0.1
-     */
-    public static boolean isASideEffect( @NotNull PsiClass psiClass )
-    {
-        if( psiClass.isInterface() )
-        {
-            return false;
-        }
-
-        PsiClass sideEffectOfClass = getSideEffectOfClass( psiClass );
-        return sideEffectOfClass != null && psiClass.isInheritor( sideEffectOfClass, true );
-    }
-
-    /**
-     * @param psiClass psi class to check.
-     * @return {@code true} if {@code psiClass} inherits {@code GenericSideEffect} class, {@code false} if
-     *         {@code psiClass} does
-     *         not inherit {@code GenericSideEffect} or {@code GenericSideEffect} is not found.
-     * @since 0.1
-     */
-    public static boolean isAGenericSideEffect( @NotNull PsiClass psiClass )
-    {
-        if( psiClass.isInterface() )
-        {
-            return false;
-        }
-
-        PsiClass genericSideEffect = getGenericSideEffectClass( psiClass );
-        return genericSideEffect != null && psiClass.isInheritor( genericSideEffect, true );
-    }
-
-    private Qi4jSideEffectUtil()
-    {
-    }
-}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/zest-java/blob/fc41bb18/tools/qidea/src/main/java/org/qi4j/ide/plugin/idea/sideEffects/inspections/SideEffectsAnnotationDeclaredCorrectlyInspection.java
----------------------------------------------------------------------
diff --git a/tools/qidea/src/main/java/org/qi4j/ide/plugin/idea/sideEffects/inspections/SideEffectsAnnotationDeclaredCorrectlyInspection.java b/tools/qidea/src/main/java/org/qi4j/ide/plugin/idea/sideEffects/inspections/SideEffectsAnnotationDeclaredCorrectlyInspection.java
deleted file mode 100644
index ac4bb90..0000000
--- a/tools/qidea/src/main/java/org/qi4j/ide/plugin/idea/sideEffects/inspections/SideEffectsAnnotationDeclaredCorrectlyInspection.java
+++ /dev/null
@@ -1,175 +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.ide.plugin.idea.sideEffects.inspections;
-
-import com.intellij.codeInspection.InspectionManager;
-import com.intellij.codeInspection.ProblemDescriptor;
-import com.intellij.openapi.project.Project;
-import com.intellij.psi.PsiAnnotation;
-import com.intellij.psi.PsiAnnotationMemberValue;
-import com.intellij.psi.PsiClass;
-import com.intellij.psi.PsiJavaCodeReferenceElement;
-import com.intellij.psi.search.GlobalSearchScope;
-import org.jetbrains.annotations.NotNull;
-import org.qi4j.ide.plugin.idea.common.inspections.AbstractFix;
-import org.qi4j.ide.plugin.idea.common.inspections.AbstractInspection;
-import org.qi4j.ide.plugin.idea.common.resource.Qi4jResourceBundle;
-import org.qi4j.ide.plugin.idea.sideEffects.common.Qi4jSideEffectUtil;
-
-import java.util.LinkedList;
-import java.util.List;
-
-import static com.intellij.codeInspection.ProblemHighlightType.GENERIC_ERROR_OR_WARNING;
-import static org.qi4j.ide.plugin.idea.common.psi.search.GlobalSearchScopeUtil.determineSearchScope;
-import static org.qi4j.ide.plugin.idea.common.resource.Qi4jResourceBundle.message;
-import static org.qi4j.ide.plugin.idea.sideEffects.common.Qi4jSideEffectUtil.*;
-
-/**
- * @author edward.yakop@gmail.com
- * @since 0.1
- */
-public final class SideEffectsAnnotationDeclaredCorrectlyInspection extends AbstractInspection
-{
-    @NotNull
-    protected final String resourceBundlePrefixId()
-    {
-        return "side.effects.annotation.declared.correctly";
-    }
-
-    @NotNull
-    public final String getShortName()
-    {
-        return "SideEffectsAnnotationDeclaredCorrectlyInspection";
-    }
-
-    @Override
-    public final ProblemDescriptor[] checkClass( @NotNull PsiClass psiClass,
-                                                 @NotNull InspectionManager manager,
-                                                 boolean isOnTheFly )
-    {
-        // If class does not have @SideEffects, ignore
-        PsiAnnotation sideEffectsAnnotation = getSideEffectsAnnotation( psiClass );
-        if( sideEffectsAnnotation == null )
-        {
-            return null;
-        }
-
-        // If @SideEffects declared in class, suggest remove @SideEffects annotation
-        if( !psiClass.isInterface() )
-        {
-            String message = message( "side.effects.annotation.declared.correctly.error.annotation.declared.in.class" );
-            RemoveSideEffectsAnnotationFix fix = new RemoveSideEffectsAnnotationFix( sideEffectsAnnotation );
-            ProblemDescriptor problemDescriptor = manager.createProblemDescriptor( sideEffectsAnnotation, message, fix,
-                                                                                   GENERIC_ERROR_OR_WARNING );
-            return new ProblemDescriptor[]{ problemDescriptor };
-        }
-
-        // If @SideEffects annotation is empty, ignore
-        List<PsiAnnotationMemberValue> sideEffectsAnnotationValue =
-            getSideEffectsAnnotationValue( sideEffectsAnnotation );
-        if( sideEffectsAnnotationValue.isEmpty() )
-        {
-            return null;
-        }
-
-        // If SideEffectOf is not resolved, ignore
-        Project project = psiClass.getProject();
-        GlobalSearchScope searchScope = determineSearchScope( psiClass );
-        PsiClass sideEffectOfClass = Qi4jSideEffectUtil.getGenericSideEffectClass( project, searchScope );
-        if( sideEffectOfClass == null )
-        {
-            return null;
-        }
-
-        List<ProblemDescriptor> problems = new LinkedList<ProblemDescriptor>();
-        for( PsiAnnotationMemberValue sideEffectClassReferenceWrapper : sideEffectsAnnotationValue )
-        {
-            PsiJavaCodeReferenceElement sideEffectClassReference =
-                getSideEffectClassReference( sideEffectClassReferenceWrapper );
-
-            // If it's not a class reference, ignore
-            if( sideEffectClassReference == null )
-            {
-                continue;
-            }
-
-            // If class reference can't be resolved, ignore
-            PsiClass sideEffectClass = (PsiClass) sideEffectClassReference.resolve();
-            if( sideEffectClass == null )
-            {
-                continue;
-            }
-
-            // If side effect class does not inherit SideEffectOf class, suggest remove that reference.
-            if( !sideEffectClass.isInheritor( sideEffectOfClass, true ) )
-            {
-                String message = Qi4jResourceBundle.message(
-                    "side.effects.annotation.declared.correctly.error.side.effect.does.not.extend.side.effect.of",
-                    sideEffectClass.getQualifiedName()
-                );
-
-                RemoveAnnotationValueFix fix = new RemoveAnnotationValueFix(
-                    sideEffectClassReferenceWrapper, sideEffectClassReference
-                );
-                ProblemDescriptor problemDescriptor = manager.createProblemDescriptor(
-                    sideEffectClassReferenceWrapper, message, fix, GENERIC_ERROR_OR_WARNING );
-                problems.add( problemDescriptor );
-            }
-            else
-            {
-                // TODO: Test whether it is a generic side effect
-                // TODO: Test whether it is a specific side effect
-            }
-        }
-
-        return problems.toArray( new ProblemDescriptor[problems.size()] );
-    }
-
-    private static class RemoveSideEffectsAnnotationFix extends AbstractFix
-    {
-        private final PsiAnnotation sideEffectsAnnotation;
-
-        private RemoveSideEffectsAnnotationFix( @NotNull PsiAnnotation sideEffectsAnnotation )
-        {
-            super( message( "side.effects.annotation.declared.correctly.fix.remove.annotation" ) );
-            this.sideEffectsAnnotation = sideEffectsAnnotation;
-        }
-
-        public final void applyFix( @NotNull Project project, @NotNull ProblemDescriptor descriptor )
-        {
-            sideEffectsAnnotation.delete();
-        }
-    }
-
-    private static class RemoveAnnotationValueFix extends AbstractFix
-    {
-        private final PsiAnnotationMemberValue annotationValueToRemove;
-
-        private RemoveAnnotationValueFix( @NotNull PsiAnnotationMemberValue annotationValueToRemove,
-                                          @NotNull PsiJavaCodeReferenceElement sideEffectClassReference )
-        {
-            super( message( "side.effects.annotation.declared.correctly.fix.remove.class.reference",
-                            sideEffectClassReference.getQualifiedName() ) );
-            this.annotationValueToRemove = annotationValueToRemove;
-        }
-
-        public final void applyFix( @NotNull Project project, @NotNull ProblemDescriptor descriptor )
-        {
-            annotationValueToRemove.delete();
-        }
-    }
-}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/zest-java/blob/fc41bb18/tools/qidea/src/main/resources/META-INF/plugin.xml
----------------------------------------------------------------------
diff --git a/tools/qidea/src/main/resources/META-INF/plugin.xml b/tools/qidea/src/main/resources/META-INF/plugin.xml
index 5a4a6e6..e85fd5d 100644
--- a/tools/qidea/src/main/resources/META-INF/plugin.xml
+++ b/tools/qidea/src/main/resources/META-INF/plugin.xml
@@ -27,20 +27,20 @@
 
   <application-components>
     <component>
-      <implementation-class>org.qi4j.ide.plugin.idea.Qi4jApplicationComponent</implementation-class>
+      <implementation-class>org.apache.zest.ide.plugin.idea.Qi4jApplicationComponent</implementation-class>
     </component>
   </application-components>
 
   <actions>
     <action id="CreateConcernFromMixinTypeOrCompositeAction"
-            class="org.qi4j.ide.plugin.idea.concerns.actions.create.CreateConcernFromMixinTypeOrCompositeAction"
+            class="org.apache.zest.ide.plugin.idea.concerns.actions.create.CreateConcernFromMixinTypeOrCompositeAction"
             text="New Concern" description="Create new Zest™ concern">
       <add-to-group group-id="CodeMenu" anchor="last"/>
     </action>
 
-    <group id="Zest" class="org.qi4j.ide.plugin.idea.common.actions.Qi4jCreateActionGroup" text="Zest™">
+    <group id="Zest" class="org.apache.zest.ide.plugin.idea.common.actions.Qi4jCreateActionGroup" text="Zest™">
       <action id="Zest.NewConcernOf"
-              class="org.qi4j.ide.plugin.idea.concerns.actions.create.inPackage.CreateConcernOfInPackageAction"
+              class="org.apache.zest.ide.plugin.idea.concerns.actions.create.inPackage.CreateConcernOfInPackageAction"
               text="New Concern" description="Create new Zest concern">
       </action>
       <add-to-group group-id="NewGroup" anchor="last"/>

http://git-wip-us.apache.org/repos/asf/zest-java/blob/fc41bb18/tools/qidea/src/main/resources/org/apache/zest/ide/plugin/idea/common/resource/Qi4jResourceBundle.properties
----------------------------------------------------------------------
diff --git a/tools/qidea/src/main/resources/org/apache/zest/ide/plugin/idea/common/resource/Qi4jResourceBundle.properties b/tools/qidea/src/main/resources/org/apache/zest/ide/plugin/idea/common/resource/Qi4jResourceBundle.properties
new file mode 100644
index 0000000..cd8c07c
--- /dev/null
+++ b/tools/qidea/src/main/resources/org/apache/zest/ide/plugin/idea/common/resource/Qi4jResourceBundle.properties
@@ -0,0 +1,159 @@
+# 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.
+
+# *****************************************************************************
+# Common
+# *****************************************************************************
+qi4j.quick.fixes.family.name=Qi4j
+qi4j.action.group.title=Qi4j
+qi4j.action.group.description=Qi4j
+qi4j.inspections.name=Qi4j issues
+qi4j.file.template.group.title=Qi4j
+
+# *****************************************************************************
+# Concern
+# *****************************************************************************
+
+# =========
+# Intention
+# =========
+add.concern.family.name=Add Qi4j Concern
+add.concern.name=Add Qi4j Concern
+
+# ==========
+# Inspection
+# ==========
+concerns.annotation.declared.correctly.name.display=Concern class extends ConcernOf abstract class
+concerns.annotation.declared.correctly.error.concern.class.does.not.extend.ConcernOf=Concern class ''{0}'' does not inherit ''org.qi4j.composite.ConcernOf'' class.
+concerns.annotation.declared.correctly.fix.remove.concern.class.reference=Remove ''{0}'' concern class reference.
+concerns.annotation.declared.correctly.error.annotation.declared.in.class=@Concerns annotation can only be declared at interface
+concerns.annotation.declared.correctly.fix.remove.annotation=Remove @Concerns annotation
+
+# =======
+# Actions
+# =======
+
+# -------------------------
+# Create concern in package
+# -------------------------
+createConcernOfInPackage.menu.action.text=Qi4j Concern Of
+createConcernOfInPackage.menu.action.description=Creates new Qi4j ConcernOf
+createConcernOfInPackage.dlg.title=New Qi4j ConcernOf
+createConcernOfInPackage.dlg.prompt=Enter name for new ConcernOf
+createConcernOfInPackage.command.name=Create ConcernOf
+createConcernOfInPackage.progress.text=Creating ConcernOf ''{0}'' class
+createConcernOfInPackage.error.title=Create concern fail
+
+# *****************************************************************************
+# Mixin
+# *****************************************************************************
+
+# ==========
+# Inspection
+# ==========
+
+# ----------------------------
+# Mixins implements mixin type
+# ----------------------------
+mixin.implements.mixin.type.name.display=Mixin class implements Mixin type class
+mixin.implements.mixin.type.fix.remove.class.reference=Remove ''{0}'' mixin class reference.
+mixin.implements.mixin.type.error.does.not.implement.any.mixin.type=Mixin class ''{0}'' does not inherit any mixin type of ''{1}''
+mixin.implements.mixin.type.error.mixin.is.an.interface=Mixin class ''{0}'' is an interface
+mixin.implements.mixin.type.error.mixin.is.a.concern=''{0}'' class is a concern
+mixin.implements.mixin.type.error.mixin.is.a.side.effect=''{0}'' class is a side effect
+
+# ------------------------------------------
+# Mixins declared on mixin type or composite
+# ------------------------------------------
+mixins.annotation.declared.on.mixin.type.name.display=@Mixins must be declared on interface
+mixins.annotation.declared.on.mixin.type.error.declared.on.class=@Mixins can only be declared on interface
+mixins.annotation.declared.on.mixin.type.fix.remove.mixins.annotation=Remove @Mixins annotation
+
+# *****************************************************************************
+# Side Effect
+# *****************************************************************************
+
+# ==========
+# Inspection
+# ==========
+side.effects.annotation.declared.correctly.name.display=@SideEffects annotation declared correctly
+side.effects.annotation.declared.correctly.error.side.effect.does.not.extend.side.effect.of=Side Effect class ''{0}'' does not inherit ''org.qi4j.composite.SideEffectOf'' class.
+side.effects.annotation.declared.correctly.fix.remove.class.reference=Remove ''{0}'' class reference
+side.effects.annotation.declared.correctly.error.annotation.declared.in.class=@SideEffects annotation can only be declared at interface
+side.effects.annotation.declared.correctly.fix.remove.annotation=Remove @SideEffects annotation
+
+# *****************************************************************************
+# Injections
+# *****************************************************************************
+
+# -----------------
+# Common Inspection
+# -----------------
+abstract.injection.annotation.declaration.inspection.error.annotation.not.declared.correctly=''{0}'' can only be declared in constructor parameters or non static class field.
+
+# -------------------
+# @Structure injection
+# -------------------
+
+# ==========
+# Inspection
+# ==========
+injections.structure.annotation.declared.correctly.name.display=@Structure Injection
+injections.structure.annotation.declared.correctly.error.invalid.injection.type=@Structure does not inject ''{0}'' type.
+injections.structure.annotation.declared.correctly.fix.remove.annotation=Remove @Structure annotation
+
+# -----------------
+# @Service injection
+# -----------------
+
+# ==========
+# Inspection
+# ==========
+injections.service.annotation.declared.correctly.name.display=@Service Injection
+injections.service.annotation.declared.correctly.error.type.is.injected.by.structure=''{0}'' type is injected by @Structure
+injections.service.annotation.declared.correctly.fix.remove.annotation=Remove @Service annotation
+injections.service.annotation.declared.correctly.fix.replace.with.structure.annotation=Replace @Service with @Structure annotation
+
+# -----------------
+# @Invocation injection
+# -----------------
+
+# ==========
+# Inspection
+# ==========
+injections.invocation.annotation.declared.correctly.name.display=@Invocation Injection
+injections.invocation.annotation.declared.correctly.error.type.is.injected.by.structure=''{0}'' type is injected by @Structure
+injections.invocation.annotation.declared.correctly.error.type.is.not.injectable=''{0}'' type is not injectable by @Invocation
+injections.invocation.annotation.declared.correctly.fix.remove.annotation=Remove @Invocation annotation
+injections.invocation.annotation.declared.correctly.fix.replace.with.structure.annotation=Replace @Invocation with @Structure annotation
+
+# *****************************************************************************
+# Applies To
+# *****************************************************************************
+
+# ==========
+# Inspection
+# ==========
+applies.to.annotation.declared.correctly.error.annotation.must.be.declared.on.class=@AppliesTo must be declared on class
+applies.to.annotation.declared.correctly.error.value.is.invalid.for.mixin=''{0}'' is neither an interface or implements ''AppliesToFilter''
+applies.to.annotation.declared.correctly.error.value.requires.class.to.extends.GenericConcern=''{0}'' requires ''{1}'' to extends GenericConcern
+applies.to.annotation.declared.correctly.error.value.requires.class.to.extends.GenericSideEffect=''{0}'' requires ''{1}'' to extends GenericSideEffect
+applies.to.annotation.declared.correctly.error.value.requires.class.to.implements.InvocationHandler=''{0}'' requires ''{1}'' to implements InvocationHandler
+applies.to.annotation.declared.correctly.error.value.requires.class.to.implement.interface.or.extends.GenericConcern=''{0}'' requires ''{1}'' to implement ''{0}'' interface or to extends ''GenericConcern''
+applies.to.annotation.declared.correctly.error.value.requires.class.to.implement.interface.or.extends.GenericSideEffect=''{0}'' requires ''{1}'' to implement ''{0}'' interface or to extends ''GenericSideEffect''
+applies.to.annotation.declared.correctly.error.value.requires.class.to.implement.value.interface.or.implements.InvocationHandler=''{0}'' requires ''{1}'' to implement ''{0}'' or ''InvocationHandler'' interface
+applies.to.annotation.declared.correctly.error.annotation.value.is.invalid.for.non.mixin=''{0}'' is not an annotation or ''AppliesToFilter'' or an interface
+applies.to.annotation.declared.correctly.fix.remove.annotation=Remove ''@AppliesTo'' annotation
+applies.to.annotation.declared.correctly.fix.remove.class.reference=Remove ''{0}'' class reference

http://git-wip-us.apache.org/repos/asf/zest-java/blob/fc41bb18/tools/qidea/src/main/resources/org/qi4j/ide/plugin/idea/common/resource/Qi4jResourceBundle.properties
----------------------------------------------------------------------
diff --git a/tools/qidea/src/main/resources/org/qi4j/ide/plugin/idea/common/resource/Qi4jResourceBundle.properties b/tools/qidea/src/main/resources/org/qi4j/ide/plugin/idea/common/resource/Qi4jResourceBundle.properties
deleted file mode 100644
index cd8c07c..0000000
--- a/tools/qidea/src/main/resources/org/qi4j/ide/plugin/idea/common/resource/Qi4jResourceBundle.properties
+++ /dev/null
@@ -1,159 +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.
-
-# *****************************************************************************
-# Common
-# *****************************************************************************
-qi4j.quick.fixes.family.name=Qi4j
-qi4j.action.group.title=Qi4j
-qi4j.action.group.description=Qi4j
-qi4j.inspections.name=Qi4j issues
-qi4j.file.template.group.title=Qi4j
-
-# *****************************************************************************
-# Concern
-# *****************************************************************************
-
-# =========
-# Intention
-# =========
-add.concern.family.name=Add Qi4j Concern
-add.concern.name=Add Qi4j Concern
-
-# ==========
-# Inspection
-# ==========
-concerns.annotation.declared.correctly.name.display=Concern class extends ConcernOf abstract class
-concerns.annotation.declared.correctly.error.concern.class.does.not.extend.ConcernOf=Concern class ''{0}'' does not inherit ''org.qi4j.composite.ConcernOf'' class.
-concerns.annotation.declared.correctly.fix.remove.concern.class.reference=Remove ''{0}'' concern class reference.
-concerns.annotation.declared.correctly.error.annotation.declared.in.class=@Concerns annotation can only be declared at interface
-concerns.annotation.declared.correctly.fix.remove.annotation=Remove @Concerns annotation
-
-# =======
-# Actions
-# =======
-
-# -------------------------
-# Create concern in package
-# -------------------------
-createConcernOfInPackage.menu.action.text=Qi4j Concern Of
-createConcernOfInPackage.menu.action.description=Creates new Qi4j ConcernOf
-createConcernOfInPackage.dlg.title=New Qi4j ConcernOf
-createConcernOfInPackage.dlg.prompt=Enter name for new ConcernOf
-createConcernOfInPackage.command.name=Create ConcernOf
-createConcernOfInPackage.progress.text=Creating ConcernOf ''{0}'' class
-createConcernOfInPackage.error.title=Create concern fail
-
-# *****************************************************************************
-# Mixin
-# *****************************************************************************
-
-# ==========
-# Inspection
-# ==========
-
-# ----------------------------
-# Mixins implements mixin type
-# ----------------------------
-mixin.implements.mixin.type.name.display=Mixin class implements Mixin type class
-mixin.implements.mixin.type.fix.remove.class.reference=Remove ''{0}'' mixin class reference.
-mixin.implements.mixin.type.error.does.not.implement.any.mixin.type=Mixin class ''{0}'' does not inherit any mixin type of ''{1}''
-mixin.implements.mixin.type.error.mixin.is.an.interface=Mixin class ''{0}'' is an interface
-mixin.implements.mixin.type.error.mixin.is.a.concern=''{0}'' class is a concern
-mixin.implements.mixin.type.error.mixin.is.a.side.effect=''{0}'' class is a side effect
-
-# ------------------------------------------
-# Mixins declared on mixin type or composite
-# ------------------------------------------
-mixins.annotation.declared.on.mixin.type.name.display=@Mixins must be declared on interface
-mixins.annotation.declared.on.mixin.type.error.declared.on.class=@Mixins can only be declared on interface
-mixins.annotation.declared.on.mixin.type.fix.remove.mixins.annotation=Remove @Mixins annotation
-
-# *****************************************************************************
-# Side Effect
-# *****************************************************************************
-
-# ==========
-# Inspection
-# ==========
-side.effects.annotation.declared.correctly.name.display=@SideEffects annotation declared correctly
-side.effects.annotation.declared.correctly.error.side.effect.does.not.extend.side.effect.of=Side Effect class ''{0}'' does not inherit ''org.qi4j.composite.SideEffectOf'' class.
-side.effects.annotation.declared.correctly.fix.remove.class.reference=Remove ''{0}'' class reference
-side.effects.annotation.declared.correctly.error.annotation.declared.in.class=@SideEffects annotation can only be declared at interface
-side.effects.annotation.declared.correctly.fix.remove.annotation=Remove @SideEffects annotation
-
-# *****************************************************************************
-# Injections
-# *****************************************************************************
-
-# -----------------
-# Common Inspection
-# -----------------
-abstract.injection.annotation.declaration.inspection.error.annotation.not.declared.correctly=''{0}'' can only be declared in constructor parameters or non static class field.
-
-# -------------------
-# @Structure injection
-# -------------------
-
-# ==========
-# Inspection
-# ==========
-injections.structure.annotation.declared.correctly.name.display=@Structure Injection
-injections.structure.annotation.declared.correctly.error.invalid.injection.type=@Structure does not inject ''{0}'' type.
-injections.structure.annotation.declared.correctly.fix.remove.annotation=Remove @Structure annotation
-
-# -----------------
-# @Service injection
-# -----------------
-
-# ==========
-# Inspection
-# ==========
-injections.service.annotation.declared.correctly.name.display=@Service Injection
-injections.service.annotation.declared.correctly.error.type.is.injected.by.structure=''{0}'' type is injected by @Structure
-injections.service.annotation.declared.correctly.fix.remove.annotation=Remove @Service annotation
-injections.service.annotation.declared.correctly.fix.replace.with.structure.annotation=Replace @Service with @Structure annotation
-
-# -----------------
-# @Invocation injection
-# -----------------
-
-# ==========
-# Inspection
-# ==========
-injections.invocation.annotation.declared.correctly.name.display=@Invocation Injection
-injections.invocation.annotation.declared.correctly.error.type.is.injected.by.structure=''{0}'' type is injected by @Structure
-injections.invocation.annotation.declared.correctly.error.type.is.not.injectable=''{0}'' type is not injectable by @Invocation
-injections.invocation.annotation.declared.correctly.fix.remove.annotation=Remove @Invocation annotation
-injections.invocation.annotation.declared.correctly.fix.replace.with.structure.annotation=Replace @Invocation with @Structure annotation
-
-# *****************************************************************************
-# Applies To
-# *****************************************************************************
-
-# ==========
-# Inspection
-# ==========
-applies.to.annotation.declared.correctly.error.annotation.must.be.declared.on.class=@AppliesTo must be declared on class
-applies.to.annotation.declared.correctly.error.value.is.invalid.for.mixin=''{0}'' is neither an interface or implements ''AppliesToFilter''
-applies.to.annotation.declared.correctly.error.value.requires.class.to.extends.GenericConcern=''{0}'' requires ''{1}'' to extends GenericConcern
-applies.to.annotation.declared.correctly.error.value.requires.class.to.extends.GenericSideEffect=''{0}'' requires ''{1}'' to extends GenericSideEffect
-applies.to.annotation.declared.correctly.error.value.requires.class.to.implements.InvocationHandler=''{0}'' requires ''{1}'' to implements InvocationHandler
-applies.to.annotation.declared.correctly.error.value.requires.class.to.implement.interface.or.extends.GenericConcern=''{0}'' requires ''{1}'' to implement ''{0}'' interface or to extends ''GenericConcern''
-applies.to.annotation.declared.correctly.error.value.requires.class.to.implement.interface.or.extends.GenericSideEffect=''{0}'' requires ''{1}'' to implement ''{0}'' interface or to extends ''GenericSideEffect''
-applies.to.annotation.declared.correctly.error.value.requires.class.to.implement.value.interface.or.implements.InvocationHandler=''{0}'' requires ''{1}'' to implement ''{0}'' or ''InvocationHandler'' interface
-applies.to.annotation.declared.correctly.error.annotation.value.is.invalid.for.non.mixin=''{0}'' is not an annotation or ''AppliesToFilter'' or an interface
-applies.to.annotation.declared.correctly.fix.remove.annotation=Remove ''@AppliesTo'' annotation
-applies.to.annotation.declared.correctly.fix.remove.class.reference=Remove ''{0}'' class reference

http://git-wip-us.apache.org/repos/asf/zest-java/blob/fc41bb18/tutorials/composites/src/docs/step1.txt
----------------------------------------------------------------------
diff --git a/tutorials/composites/src/docs/step1.txt b/tutorials/composites/src/docs/step1.txt
index df8ce5c..fce9a72 100644
--- a/tutorials/composites/src/docs/step1.txt
+++ b/tutorials/composites/src/docs/step1.txt
@@ -27,7 +27,7 @@ Composite Oriented application. Here is the initial code of HelloWorld.
 
 [snippet,java]
 ----
-source=tutorials/composites/src/main/java/org/qi4j/tutorials/composites/tutorial1/HelloWorld.java
+source=tutorials/composites/src/main/java/org/apache/zest/tutorials/composites/tutorial1/HelloWorld.java
 tag=initial
 ----
 
@@ -57,28 +57,28 @@ If you have successfully completed the task, you should end up with the followin
 *HelloWorld.java*
 [snippet,java]
 ----
-source=tutorials/composites/src/main/java/org/qi4j/tutorials/composites/tutorial2/HelloWorld.java
+source=tutorials/composites/src/main/java/org/apache/zest/tutorials/composites/tutorial2/HelloWorld.java
 tag=solution
 ----
 
 *HelloWorldState.java*
 [snippet,java]
 ----
-source=tutorials/composites/src/main/java/org/qi4j/tutorials/composites/tutorial2/HelloWorldState.java
+source=tutorials/composites/src/main/java/org/apache/zest/tutorials/composites/tutorial2/HelloWorldState.java
 tag=solution
 ----
 
 *HelloWorldBehaviour.java*
 [snippet,java]
 ----
-source=tutorials/composites/src/main/java/org/qi4j/tutorials/composites/tutorial2/HelloWorldBehaviour.java
+source=tutorials/composites/src/main/java/org/apache/zest/tutorials/composites/tutorial2/HelloWorldBehaviour.java
 tag=solution
 ----
 
 *HelloWorldMixin.java*
 [snippet,java]
 ----
-source=tutorials/composites/src/main/java/org/qi4j/tutorials/composites/tutorial2/HelloWorldMixin.java
+source=tutorials/composites/src/main/java/org/apache/zest/tutorials/composites/tutorial2/HelloWorldMixin.java
 tag=solution
 ----
 

http://git-wip-us.apache.org/repos/asf/zest-java/blob/fc41bb18/tutorials/composites/src/docs/step2.txt
----------------------------------------------------------------------
diff --git a/tutorials/composites/src/docs/step2.txt b/tutorials/composites/src/docs/step2.txt
index 1268ce1..eb26138 100644
--- a/tutorials/composites/src/docs/step2.txt
+++ b/tutorials/composites/src/docs/step2.txt
@@ -34,7 +34,7 @@ checks in the Mixin. If a null value is passed in an exception will be thrown by
 
 Steps for this tutorial:
 
-- Create an interface that extends the domain interface HelloWorld and org.qi4j.api.composite.TransientComposite.
+- Create an interface that extends the domain interface +HelloWorld+ and +org.apache.zest.api.composite.TransientComposite+.
 - Add a @Mixins annotation to it with the name of the Mixin as argument.
 
 == Solution ==
@@ -48,14 +48,14 @@ These ones remain unchanged:
 *HelloWorldComposite.java*
 [snippet,java]
 ----
-source=tutorials/composites/src/main/java/org/qi4j/tutorials/composites/tutorial3/HelloWorldComposite.java
+source=tutorials/composites/src/main/java/org/apache/zest/tutorials/composites/tutorial3/HelloWorldComposite.java
 tag=solution
 ----
 
 *HelloWorldMixin.java*
 [snippet,java]
 ----
-source=tutorials/composites/src/main/java/org/qi4j/tutorials/composites/tutorial2/HelloWorldMixin.java
+source=tutorials/composites/src/main/java/org/apache/zest/tutorials/composites/tutorial2/HelloWorldMixin.java
 tag=solution
 ----
 

http://git-wip-us.apache.org/repos/asf/zest-java/blob/fc41bb18/tutorials/composites/src/docs/step3.txt
----------------------------------------------------------------------
diff --git a/tutorials/composites/src/docs/step3.txt b/tutorials/composites/src/docs/step3.txt
index 3522898..e87014e 100644
--- a/tutorials/composites/src/docs/step3.txt
+++ b/tutorials/composites/src/docs/step3.txt
@@ -40,35 +40,35 @@ Only *HelloWorld.java* remains unchanged.
 *HelloWorldComposite.java*
 [snippet,java]
 ----
-source=tutorials/composites/src/main/java/org/qi4j/tutorials/composites/tutorial4/HelloWorldComposite.java
+source=tutorials/composites/src/main/java/org/apache/zest/tutorials/composites/tutorial4/HelloWorldComposite.java
 tag=solution
 ----
 
 *HelloWorldBehaviour.java*
 [snippet,java]
 ----
-source=tutorials/composites/src/main/java/org/qi4j/tutorials/composites/tutorial4/HelloWorldBehaviour.java
+source=tutorials/composites/src/main/java/org/apache/zest/tutorials/composites/tutorial4/HelloWorldBehaviour.java
 tag=solution
 ----
 
 *HelloWorldBehaviourMixin.java*
 [snippet,java]
 ----
-source=tutorials/composites/src/main/java/org/qi4j/tutorials/composites/tutorial4/HelloWorldBehaviourMixin.java
+source=tutorials/composites/src/main/java/org/apache/zest/tutorials/composites/tutorial4/HelloWorldBehaviourMixin.java
 tag=solution
 ----
 
 *HelloWorldState.java*
 [snippet,java]
 ----
-source=tutorials/composites/src/main/java/org/qi4j/tutorials/composites/tutorial4/HelloWorldState.java
+source=tutorials/composites/src/main/java/org/apache/zest/tutorials/composites/tutorial4/HelloWorldState.java
 tag=solution
 ----
 
 *HelloWorldStateMixin.java*
 [snippet,java]
 ----
-source=tutorials/composites/src/main/java/org/qi4j/tutorials/composites/tutorial4/HelloWorldStateMixin.java
+source=tutorials/composites/src/main/java/org/apache/zest/tutorials/composites/tutorial4/HelloWorldStateMixin.java
 tag=solution
 ----
 

http://git-wip-us.apache.org/repos/asf/zest-java/blob/fc41bb18/tutorials/composites/src/docs/step4.txt
----------------------------------------------------------------------
diff --git a/tutorials/composites/src/docs/step4.txt b/tutorials/composites/src/docs/step4.txt
index d940443..ed77e6a 100644
--- a/tutorials/composites/src/docs/step4.txt
+++ b/tutorials/composites/src/docs/step4.txt
@@ -63,14 +63,14 @@ These ones remain unchanged:
 *HelloWorldBehaviourMixin.java*
 [snippet,java]
 ----
-source=tutorials/composites/src/main/java/org/qi4j/tutorials/composites/tutorial5/HelloWorldBehaviourMixin.java
+source=tutorials/composites/src/main/java/org/apache/zest/tutorials/composites/tutorial5/HelloWorldBehaviourMixin.java
 tag=solution
 ----
 
 *HelloWorldBehaviourConcern.java*
 [snippet,java]
 ----
-source=tutorials/composites/src/main/java/org/qi4j/tutorials/composites/tutorial5/HelloWorldBehaviourConcern.java
+source=tutorials/composites/src/main/java/org/apache/zest/tutorials/composites/tutorial5/HelloWorldBehaviourConcern.java
 tag=solution
 ----
 

http://git-wip-us.apache.org/repos/asf/zest-java/blob/fc41bb18/tutorials/composites/src/docs/step5.txt
----------------------------------------------------------------------
diff --git a/tutorials/composites/src/docs/step5.txt b/tutorials/composites/src/docs/step5.txt
index 054d1ad..9e4dac5 100644
--- a/tutorials/composites/src/docs/step5.txt
+++ b/tutorials/composites/src/docs/step5.txt
@@ -66,28 +66,28 @@ These ones remain unchanged:
 *HelloWorldBehaviour.java*
 [snippet,java]
 ----
-source=tutorials/composites/src/main/java/org/qi4j/tutorials/composites/tutorial6/HelloWorldBehaviour.java
+source=tutorials/composites/src/main/java/org/apache/zest/tutorials/composites/tutorial6/HelloWorldBehaviour.java
 tag=solution
 ----
 
 *HelloWorldBehaviourMixin.java*
 [snippet,java]
 ----
-source=tutorials/composites/src/main/java/org/qi4j/tutorials/composites/tutorial6/HelloWorldBehaviourMixin.java
+source=tutorials/composites/src/main/java/org/apache/zest/tutorials/composites/tutorial6/HelloWorldBehaviourMixin.java
 tag=solution
 ----
 
 *HelloWorldBehaviourConcern.java*
 [snippet,java]
 ----
-source=tutorials/composites/src/main/java/org/qi4j/tutorials/composites/tutorial6/HelloWorldBehaviourConcern.java
+source=tutorials/composites/src/main/java/org/apache/zest/tutorials/composites/tutorial6/HelloWorldBehaviourConcern.java
 tag=solution
 ----
 
 *HelloWorldState.java*
 [snippet,java]
 ----
-source=tutorials/composites/src/main/java/org/qi4j/tutorials/composites/tutorial6/HelloWorldState.java
+source=tutorials/composites/src/main/java/org/apache/zest/tutorials/composites/tutorial6/HelloWorldState.java
 tag=solution
 ----
 

http://git-wip-us.apache.org/repos/asf/zest-java/blob/fc41bb18/tutorials/composites/src/docs/step6.txt
----------------------------------------------------------------------
diff --git a/tutorials/composites/src/docs/step6.txt b/tutorials/composites/src/docs/step6.txt
index 4ba88e5..136f36a 100644
--- a/tutorials/composites/src/docs/step6.txt
+++ b/tutorials/composites/src/docs/step6.txt
@@ -62,28 +62,28 @@ These ones remain unchanged:
 *HelloWorldBehaviour.java*
 [snippet,java]
 ----
-source=tutorials/composites/src/main/java/org/qi4j/tutorials/composites/tutorial7/HelloWorldBehaviour.java
+source=tutorials/composites/src/main/java/org/apache/zest/tutorials/composites/tutorial7/HelloWorldBehaviour.java
 tag=solution
 ----
 
 *HelloWorldBehaviourSideEffect.java*
 [snippet,java]
 ----
-source=tutorials/composites/src/main/java/org/qi4j/tutorials/composites/tutorial7/HelloWorldBehaviourSideEffect.java
+source=tutorials/composites/src/main/java/org/apache/zest/tutorials/composites/tutorial7/HelloWorldBehaviourSideEffect.java
 tag=solution
 ----
 
 *HelloWorldComposite.java*
 [snippet,java]
 ----
-source=tutorials/composites/src/main/java/org/qi4j/tutorials/composites/tutorial7/HelloWorldComposite.java
+source=tutorials/composites/src/main/java/org/apache/zest/tutorials/composites/tutorial7/HelloWorldComposite.java
 tag=solution
 ----
 
 *HelloWorldState.java*
 [snippet,java]
 ----
-source=tutorials/composites/src/main/java/org/qi4j/tutorials/composites/tutorial7/HelloWorldState.java
+source=tutorials/composites/src/main/java/org/apache/zest/tutorials/composites/tutorial7/HelloWorldState.java
 tag=solution
 ----
 

http://git-wip-us.apache.org/repos/asf/zest-java/blob/fc41bb18/tutorials/composites/src/docs/step7.txt
----------------------------------------------------------------------
diff --git a/tutorials/composites/src/docs/step7.txt b/tutorials/composites/src/docs/step7.txt
index bdec58a..98fb3bd 100644
--- a/tutorials/composites/src/docs/step7.txt
+++ b/tutorials/composites/src/docs/step7.txt
@@ -80,28 +80,28 @@ Theses ones are deleted:
 *HelloWorldBehaviourMixin.java*
 [snippet,java]
 ----
-source=tutorials/composites/src/main/java/org/qi4j/tutorials/composites/tutorial8/HelloWorldBehaviourMixin.java
+source=tutorials/composites/src/main/java/org/apache/zest/tutorials/composites/tutorial8/HelloWorldBehaviourMixin.java
 tag=solution
 ----
 
 *HelloWorldComposite.java*
 [snippet,java]
 ----
-source=tutorials/composites/src/main/java/org/qi4j/tutorials/composites/tutorial8/HelloWorldComposite.java
+source=tutorials/composites/src/main/java/org/apache/zest/tutorials/composites/tutorial8/HelloWorldComposite.java
 tag=solution
 ----
 
 *HelloWorldState.java*
 [snippet,java]
 ----
-source=tutorials/composites/src/main/java/org/qi4j/tutorials/composites/tutorial8/HelloWorldState.java
+source=tutorials/composites/src/main/java/org/apache/zest/tutorials/composites/tutorial8/HelloWorldState.java
 tag=solution
 ----
 
 *HelloWorldStateMixin.java*
 [snippet,java]
 ----
-source=tutorials/composites/src/main/java/org/qi4j/tutorials/composites/tutorial8/HelloWorldStateMixin.java
+source=tutorials/composites/src/main/java/org/apache/zest/tutorials/composites/tutorial8/HelloWorldStateMixin.java
 tag=solution
 ----
 

http://git-wip-us.apache.org/repos/asf/zest-java/blob/fc41bb18/tutorials/composites/src/docs/step8.txt
----------------------------------------------------------------------
diff --git a/tutorials/composites/src/docs/step8.txt b/tutorials/composites/src/docs/step8.txt
index 90225ce..11e0752 100644
--- a/tutorials/composites/src/docs/step8.txt
+++ b/tutorials/composites/src/docs/step8.txt
@@ -60,21 +60,21 @@ These ones remain unchanged:
 *GenericPropertyMixin.java*
 [snippet,java]
 ----
-source=tutorials/composites/src/main/java/org/qi4j/tutorials/composites/tutorial9/GenericPropertyMixin.java
+source=tutorials/composites/src/main/java/org/apache/zest/tutorials/composites/tutorial9/GenericPropertyMixin.java
 tag=solution
 ----
 
 *HelloWorldBehaviourMixin.java*
 [snippet,java]
 ----
-source=tutorials/composites/src/main/java/org/qi4j/tutorials/composites/tutorial9/HelloWorldBehaviourMixin.java
+source=tutorials/composites/src/main/java/org/apache/zest/tutorials/composites/tutorial9/HelloWorldBehaviourMixin.java
 tag=solution
 ----
 
 *HelloWorldComposite.java*
 [snippet,java]
 ----
-source=tutorials/composites/src/main/java/org/qi4j/tutorials/composites/tutorial9/HelloWorldComposite.java
+source=tutorials/composites/src/main/java/org/apache/zest/tutorials/composites/tutorial9/HelloWorldComposite.java
 tag=solution
 ----
 

http://git-wip-us.apache.org/repos/asf/zest-java/blob/fc41bb18/tutorials/composites/src/docs/step9.txt
----------------------------------------------------------------------
diff --git a/tutorials/composites/src/docs/step9.txt b/tutorials/composites/src/docs/step9.txt
index 6e6047f..0108bab 100644
--- a/tutorials/composites/src/docs/step9.txt
+++ b/tutorials/composites/src/docs/step9.txt
@@ -65,20 +65,20 @@ If you have successfully completed the task, you should end up with the followin
 *HelloWorldComposite.java*
 [snippet,java]
 ----
-source=tutorials/composites/src/main/java/org/qi4j/tutorials/composites/tutorial10/HelloWorldComposite.java
+source=tutorials/composites/src/main/java/org/apache/zest/tutorials/composites/tutorial10/HelloWorldComposite.java
 tag=solution
 ----
 
 *HelloWorldMixin.java*
 [snippet,java]
 ----
-source=tutorials/composites/src/main/java/org/qi4j/tutorials/composites/tutorial10/HelloWorldMixin.java
+source=tutorials/composites/src/main/java/org/apache/zest/tutorials/composites/tutorial10/HelloWorldMixin.java
 tag=solution
 ----
 
 *HelloWorldState.java*
 [snippet,java]
 ----
-source=tutorials/composites/src/main/java/org/qi4j/tutorials/composites/tutorial10/HelloWorldState.java
+source=tutorials/composites/src/main/java/org/apache/zest/tutorials/composites/tutorial10/HelloWorldState.java
 tag=solution
 ----

http://git-wip-us.apache.org/repos/asf/zest-java/blob/fc41bb18/tutorials/introduction/src/docs/qi4j-cop.txt
----------------------------------------------------------------------
diff --git a/tutorials/introduction/src/docs/qi4j-cop.txt b/tutorials/introduction/src/docs/qi4j-cop.txt
deleted file mode 100644
index 0726ab8..0000000
--- a/tutorials/introduction/src/docs/qi4j-cop.txt
+++ /dev/null
@@ -1,22 +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.
-///////////////////////////////////////////////////////////////
-
-[[qi4j-cop,COP with Java and Zest™]]
-= COP with Java and Zest™ =
-

http://git-wip-us.apache.org/repos/asf/zest-java/blob/fc41bb18/tutorials/introduction/src/docs/state-modeling.txt
----------------------------------------------------------------------
diff --git a/tutorials/introduction/src/docs/state-modeling.txt b/tutorials/introduction/src/docs/state-modeling.txt
index 0c5ec82..5a4aea1 100644
--- a/tutorials/introduction/src/docs/state-modeling.txt
+++ b/tutorials/introduction/src/docs/state-modeling.txt
@@ -48,7 +48,7 @@ Here's an example of how you could define an EntityComposite:
 
 [snippet,java]
 -----------
-source=tutorials/introduction/src/main/java/org/qi4j/demo/intro/StateModelingDocs.java
+source=tutorials/introduction/src/main/java/org/apache/zest/demo/intro/StateModelingDocs.java
 tag=intro1
 -----------
 
@@ -72,7 +72,7 @@ context instead of classes you would probably do something like this instead:
 
 [snippet,java]
 -----------
-source=tutorials/introduction/src/main/java/org/qi4j/demo/intro/StateModelingDocs.java
+source=tutorials/introduction/src/main/java/org/apache/zest/demo/intro/StateModelingDocs.java
 tag=roles
 -----------
 
@@ -108,7 +108,7 @@ checks when they are updated. What you want are ValueComposites:
 
 [snippet,java]
 -----------
-source=tutorials/introduction/src/main/java/org/qi4j/demo/intro/StateModelingDocs.java
+source=tutorials/introduction/src/main/java/org/apache/zest/demo/intro/StateModelingDocs.java
 tag=values
 -----------
 
@@ -142,7 +142,7 @@ you write role mixins which map domain methods to that internal state. Here's an
 
 [snippet,java]
 -----------
-source=tutorials/introduction/src/main/java/org/qi4j/demo/intro/StateModelingDocs.java
+source=tutorials/introduction/src/main/java/org/apache/zest/demo/intro/StateModelingDocs.java
 tag=private
 -----------
 
@@ -171,7 +171,7 @@ To end with, here's a sample of how some other state modeling concepts can be ex
 
 [snippet,java]
 -----------
-source=tutorials/introduction/src/main/java/org/qi4j/demo/intro/StateModelingDocs.java
+source=tutorials/introduction/src/main/java/org/apache/zest/demo/intro/StateModelingDocs.java
 tag=more
 -----------
 

http://git-wip-us.apache.org/repos/asf/zest-java/blob/fc41bb18/tutorials/introduction/src/docs/whats-an-object.txt
----------------------------------------------------------------------
diff --git a/tutorials/introduction/src/docs/whats-an-object.txt b/tutorials/introduction/src/docs/whats-an-object.txt
index 11bb20d..2a8cd05 100644
--- a/tutorials/introduction/src/docs/whats-an-object.txt
+++ b/tutorials/introduction/src/docs/whats-an-object.txt
@@ -90,7 +90,7 @@ This leads us to this typical implementation of an Entity
 
 [snippet,java]
 -----------
-source=tutorials/introduction/src/main/java/org/qi4j/demo/intro/WhatsAnObjectDocs.java
+source=tutorials/introduction/src/main/java/org/apache/zest/demo/intro/WhatsAnObjectDocs.java
 tag=wo1
 -----------
 
@@ -102,7 +102,7 @@ in the mixins.
 
 [snippet,java]
 -----------
-source=tutorials/introduction/src/main/java/org/qi4j/demo/intro/WhatsAnObjectDocs.java
+source=tutorials/introduction/src/main/java/org/apache/zest/demo/intro/WhatsAnObjectDocs.java
 tag=wo2
 -----------
 
@@ -114,7 +114,7 @@ interface:
 
 [snippet,java]
 -----------
-source=tutorials/introduction/src/main/java/org/qi4j/demo/intro/WhatsAnObjectDocs.java
+source=tutorials/introduction/src/main/java/org/apache/zest/demo/intro/WhatsAnObjectDocs.java
 tag=wo3
 -----------
 
@@ -122,7 +122,7 @@ This lets us see the totality of all the state that the Entity has, and can be u
 
 [snippet,java]
 -----------
-source=tutorials/introduction/src/main/java/org/qi4j/demo/intro/WhatsAnObjectDocs.java
+source=tutorials/introduction/src/main/java/org/apache/zest/demo/intro/WhatsAnObjectDocs.java
 tag=wo4
 -----------
 
@@ -199,5 +199,5 @@ on this page.
 
 That's it. Well done if you've read this far :-)
 
-Comments and thoughts to qi4j-dev forum at Google Groups on this are highly appreciated. This is very very important topics,
-and crucial to understanding/explaining why COP/Zest™ is so great! :-)
+Comments and thoughts to dev@zest.apache.org mailing list on this are highly appreciated. This is very very important
+topics, and crucial to understanding/explaining why COP/Zest™ is so great! :-)

http://git-wip-us.apache.org/repos/asf/zest-java/blob/fc41bb18/tutorials/introduction/src/docs/zest-cop.txt
----------------------------------------------------------------------
diff --git a/tutorials/introduction/src/docs/zest-cop.txt b/tutorials/introduction/src/docs/zest-cop.txt
new file mode 100644
index 0000000..fb06080
--- /dev/null
+++ b/tutorials/introduction/src/docs/zest-cop.txt
@@ -0,0 +1,22 @@
+///////////////////////////////////////////////////////////////
+ * 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.
+///////////////////////////////////////////////////////////////
+
+[[zest-cop,COP with Java and Zest™]]
+= COP with Java and Zest™ =
+

http://git-wip-us.apache.org/repos/asf/zest-java/blob/fc41bb18/tutorials/introduction/tenminutes/src/docs/ten-minutes.txt
----------------------------------------------------------------------
diff --git a/tutorials/introduction/tenminutes/src/docs/ten-minutes.txt b/tutorials/introduction/tenminutes/src/docs/ten-minutes.txt
index dc86b5f..0d8c4ac 100644
--- a/tutorials/introduction/tenminutes/src/docs/ten-minutes.txt
+++ b/tutorials/introduction/tenminutes/src/docs/ten-minutes.txt
@@ -46,7 +46,7 @@ See the <<howto-depend-on-zest>> tutorial for details.
 Composition is done with Java interfaces and Annotations. Example;
 [snippet,java]
 -----------
-source=tutorials/introduction/tenminutes/src/main/java/org/qi4j/demo/tenminute/OrderEntity.java
+source=tutorials/introduction/tenminutes/src/main/java/org/apache/zest/demo/tenminute/OrderEntity.java
 tag=mainClass
 -----------
 
@@ -56,7 +56,7 @@ methods that they declare, for instance;
 
 [snippet,java]
 -----------
-source=tutorials/introduction/tenminutes/src/main/java/org/qi4j/demo/tenminute/InventoryConcern.java
+source=tutorials/introduction/tenminutes/src/main/java/org/apache/zest/demo/tenminute/InventoryConcern.java
 tag=allClass
 -----------
 
@@ -80,7 +80,7 @@ will execute after the Constraints, Concerns and Mixins. We add the SideEffect t
 
 [snippet,java]
 -----------
-source=tutorials/introduction/tenminutes/src/main/java/org/qi4j/demo/tenminute/OrderEntity.java
+source=tutorials/introduction/tenminutes/src/main/java/org/apache/zest/demo/tenminute/OrderEntity.java
 tag=sideEffect
 -----------
 
@@ -88,7 +88,7 @@ The SideEffect implementation is fairly simple.
 
 [snippet,java]
 -----------
-source=tutorials/introduction/tenminutes/src/main/java/org/qi4j/demo/tenminute/MailNotifySideEffect.java
+source=tutorials/introduction/tenminutes/src/main/java/org/apache/zest/demo/tenminute/MailNotifySideEffect.java
 tag=allClass
 -----------
 The MailService is dependency injected, as we have seen before.

http://git-wip-us.apache.org/repos/asf/zest-java/blob/fc41bb18/tutorials/introduction/thirtyminutes/src/docs/thirty-minutes.txt
----------------------------------------------------------------------
diff --git a/tutorials/introduction/thirtyminutes/src/docs/thirty-minutes.txt b/tutorials/introduction/thirtyminutes/src/docs/thirty-minutes.txt
index 3913a9f..ff2fa34 100644
--- a/tutorials/introduction/thirtyminutes/src/docs/thirty-minutes.txt
+++ b/tutorials/introduction/thirtyminutes/src/docs/thirty-minutes.txt
@@ -41,7 +41,7 @@ See the <<howto-depend-on-zest>> tutorial for details.
 We will go back to the OrderEntity example;
 [snippet,java]
 -----------
-source=tutorials/introduction/tenminutes/src/main/java/org/qi4j/demo/tenminute/OrderEntity.java
+source=tutorials/introduction/tenminutes/src/main/java/org/apache/zest/demo/tenminute/OrderEntity.java
 tag=mainClass
 -----------
 
@@ -52,7 +52,7 @@ First we need to create (or also find in a library) the mechanics of the audit t
 
 [snippet,java]
 -----------
-source=tutorials/introduction/thirtyminutes/src/main/java/org/qi4j/demo/thirtyminutes/ThirtyMinutesDocs.java
+source=tutorials/introduction/thirtyminutes/src/main/java/org/apache/zest/demo/thirtyminutes/ThirtyMinutesDocs.java
 tag=2
 -----------
 
@@ -66,7 +66,7 @@ We also need a Concern to hang into the methods of the Order interface.
 
 [snippet,java]
 -----------
-source=tutorials/introduction/thirtyminutes/src/main/java/org/qi4j/demo/thirtyminutes/ThirtyMinutesDocs.java
+source=tutorials/introduction/thirtyminutes/src/main/java/org/apache/zest/demo/thirtyminutes/ThirtyMinutesDocs.java
 tag=3
 -----------
 
@@ -81,7 +81,7 @@ the re-use value. It could look like this;
 
 [snippet,java]
 -----------
-source=tutorials/introduction/thirtyminutes/src/main/java/org/qi4j/demo/thirtyminutes/ThirtyMinutesDocs.java
+source=tutorials/introduction/thirtyminutes/src/main/java/org/apache/zest/demo/thirtyminutes/ThirtyMinutesDocs.java
 tag=4
 -----------
 
@@ -93,7 +93,7 @@ Finally, we need to declare the Concern in the OrderEntity;
 
 [snippet,java]
 -----------
-source=tutorials/introduction/thirtyminutes/src/main/java/org/qi4j/demo/thirtyminutes/ThirtyMinutesDocs.java
+source=tutorials/introduction/thirtyminutes/src/main/java/org/apache/zest/demo/thirtyminutes/ThirtyMinutesDocs.java
 tag=5
 -----------
 
@@ -115,7 +115,7 @@ Let's say that we want to find a particular Order from its SequenceNumber.
 
 [snippet,java]
 -----------
-source=tutorials/introduction/thirtyminutes/src/main/java/org/qi4j/demo/thirtyminutes/ThirtyMinutesDocs.java
+source=tutorials/introduction/thirtyminutes/src/main/java/org/apache/zest/demo/thirtyminutes/ThirtyMinutesDocs.java
 tag=6
 -----------
 
@@ -132,7 +132,7 @@ Another example,
 
 [snippet,java]
 -----------
-source=tutorials/introduction/thirtyminutes/src/main/java/org/qi4j/demo/thirtyminutes/ThirtyMinutesDocs.java
+source=tutorials/introduction/thirtyminutes/src/main/java/org/apache/zest/demo/thirtyminutes/ThirtyMinutesDocs.java
 tag=7
 -----------
 
@@ -144,7 +144,7 @@ that has made an Order in the last 30 days;
 
 [snippet,java]
 -----------
-source=tutorials/introduction/thirtyminutes/src/main/java/org/qi4j/demo/thirtyminutes/ThirtyMinutesDocs.java
+source=tutorials/introduction/thirtyminutes/src/main/java/org/apache/zest/demo/thirtyminutes/ThirtyMinutesDocs.java
 tag=8
 -----------
 

http://git-wip-us.apache.org/repos/asf/zest-java/blob/fc41bb18/tutorials/introduction/twominutes/src/docs/two-minutes.txt
----------------------------------------------------------------------
diff --git a/tutorials/introduction/twominutes/src/docs/two-minutes.txt b/tutorials/introduction/twominutes/src/docs/two-minutes.txt
index be502d2..d1ad443 100644
--- a/tutorials/introduction/twominutes/src/docs/two-minutes.txt
+++ b/tutorials/introduction/twominutes/src/docs/two-minutes.txt
@@ -43,7 +43,7 @@ But we also need an implementation for Speaker, which we declare here via the `@
 
 [snippet,java]
 -----------
-source=tutorials/introduction/twominutes/src/main/java/org/qi4j/demo/twominute/Speaker.java
+source=tutorials/introduction/twominutes/src/main/java/org/apache/zest/demo/twominute/Speaker.java
 tag=documentation
 -----------
 
@@ -52,7 +52,7 @@ In this case, return a String with the content "Hello, World!".
 
 [snippet,java]
 -----------
-source=tutorials/introduction/twominutes/src/main/java/org/qi4j/demo/twominute/SpeakerMixin.java
+source=tutorials/introduction/twominutes/src/main/java/org/apache/zest/demo/twominute/SpeakerMixin.java
 tag=documentation
 -----------
 
@@ -60,7 +60,7 @@ So far so good. We now need to make this into something that can run. This can b
 
 [snippet,java]
 -----------
-source=tutorials/introduction/twominutes/src/main/java/org/qi4j/demo/twominute/Main.java
+source=tutorials/introduction/twominutes/src/main/java/org/apache/zest/demo/twominute/Main.java
 tag=documentation
 -----------
 

http://git-wip-us.apache.org/repos/asf/zest-java/blob/fc41bb18/tutorials/services/src/docs/step3.txt
----------------------------------------------------------------------
diff --git a/tutorials/services/src/docs/step3.txt b/tutorials/services/src/docs/step3.txt
index f81f3e1..e4d0f6f 100644
--- a/tutorials/services/src/docs/step3.txt
+++ b/tutorials/services/src/docs/step3.txt
@@ -41,7 +41,7 @@ Steps to do.
 - Delete the LibraryActivator and remove the @Activators annotation from the LibraryService and the corresponding createInitialData method.
 - In the LibraryMixin remove the member injection of the ValueBuilderFactory, and instead inject the ValueBuilderFactory in the constructor.
 - Inject the LibraryConfiguration via the constructor. The injection scope is @This.
-- Create a resource called LibraryService.properties and place it in the directory org/qi4j/tutorials/services/step4 in the classpath (for instance, src/main/resources ). Put something like this in:
+- Create a resource called LibraryService.properties and place it in the directory +org/apache/zest/tutorials/services/step4+ in the classpath (for instance, src/main/resources ). Put something like this in:
     titles=Domain Driven Design, Pragmatic Programmer, Extreme Programming Explained
     authors=Eric Evans, Andy Hunt, Kent Beck
     #Number of copies of each book.