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 [email protected] - * @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 [email protected] - * @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 [email protected] - * @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 [email protected] - * @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 [email protected] - * @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 [email protected] - * @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 [email protected] 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.
