/*************************************************************************************
* Copyright (c) 2008-2011 Red Hat, Inc. and others.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
* http://www.eclipse.org/legal/epl-v10.html
*
* Contributors:
* JBoss by Red Hat - Initial implementation.
************************************************************************************/
package org.jboss.tools.seam.ui.test.marker;
import java.io.IOException;
import junit.framework.TestCase;
import org.eclipse.core.resources.IProject;
import org.eclipse.core.resources.IResource;
import org.eclipse.core.resources.ResourcesPlugin;
import org.eclipse.core.runtime.CoreException;
import org.eclipse.jface.preference.IPersistentPreferenceStore;
import org.eclipse.jface.preference.IPreferenceStore;
import org.jboss.tools.common.base.test.MarkerResolutionTestUtil;
import org.jboss.tools.seam.core.SeamCorePlugin;
import org.jboss.tools.seam.core.SeamPreferences;
import org.jboss.tools.seam.internal.core.validation.SeamCoreValidator;
import org.jboss.tools.seam.ui.marker.AddAnnotatedMethodMarkerResolution;
import org.jboss.tools.seam.ui.marker.AddAnnotationMarkerResolution;
import org.jboss.tools.seam.ui.marker.AddSetterMarkerResolution;
import org.jboss.tools.seam.ui.marker.ChangeScopeMarkerResolution;
import org.jboss.tools.seam.ui.marker.DeleteAnnotationMarkerResolution;
import org.jboss.tools.seam.ui.marker.RenameAnnotationMarkerResolution;
import org.jboss.tools.test.util.JobUtils;
/**
* @author Daniel Azarov
*
*/
public class SeamMarkerResolutionTest extends TestCase {
public static final String PROBLEM_TYPE = "org.jboss.tools.seam.core.seamproblem";
private IProject project;
@Override
protected void setUp() throws Exception {
JobUtils.waitForIdle();
IResource project = ResourcesPlugin.getWorkspace().getRoot().findMember("SeamWebWarTestProject");
this.project = project.getProject();
IPreferenceStore store = SeamCorePlugin.getDefault().getPreferenceStore();
store.putValue(SeamPreferences.DUPLICATE_REMOVE, SeamPreferences.WARNING);
store.putValue(SeamPreferences.DUPLICATE_DESTROY, SeamPreferences.WARNING);
store.putValue(SeamPreferences.DUPLICATE_CREATE, SeamPreferences.WARNING);
store.putValue(SeamPreferences.DUPLICATE_UNWRAP, SeamPreferences.WARNING);
store.putValue(SeamPreferences.CREATE_DOESNT_BELONG_TO_COMPONENT, SeamPreferences.WARNING);
store.putValue(SeamPreferences.UNWRAP_DOESNT_BELONG_TO_COMPONENT, SeamPreferences.WARNING);
store.putValue(SeamPreferences.OBSERVER_DOESNT_BELONG_TO_COMPONENT, SeamPreferences.WARNING);
store.putValue(SeamPreferences.NONUNIQUE_COMPONENT_NAME, SeamPreferences.WARNING);
store.putValue(SeamPreferences.STATEFUL_COMPONENT_DOES_NOT_CONTENT_REMOVE, SeamPreferences.WARNING);
store.putValue(SeamPreferences.STATEFUL_COMPONENT_DOES_NOT_CONTENT_DESTROY, SeamPreferences.WARNING);
store.putValue(SeamPreferences.STATEFUL_COMPONENT_WRONG_SCOPE, SeamPreferences.WARNING);
store.putValue(SeamPreferences.ENTITY_COMPONENT_WRONG_SCOPE, SeamPreferences.WARNING);
store.putValue(SeamPreferences.UNKNOWN_COMPONENT_PROPERTY, SeamPreferences.WARNING);
if(store instanceof IPersistentPreferenceStore) {
try {
((IPersistentPreferenceStore)store).save();
} catch (IOException e) {
SeamCorePlugin.getPluginLog().logError(e);
}
}
}
@Override
protected void tearDown() throws Exception {
}
public void testDuplicateRemoveAnnotationResolution() throws CoreException {
MarkerResolutionTestUtil.checkResolution(project,
new String[]{
"src/action/org/domain/SeamWebWarTestProject/session/StatefulDuplicateRemoveComponent.java"
},
PROBLEM_TYPE,
SeamCoreValidator.MESSAGE_ID_ATTRIBUTE_NAME,
SeamCoreValidator.DUPLICATE_REMOVE_MESSAGE_ID,
DeleteAnnotationMarkerResolution.class);
}
public void testDuplicateDestroyAnnotationResolution() throws CoreException {
MarkerResolutionTestUtil.checkResolution(project,
new String[]{
"src/action/org/domain/SeamWebWarTestProject/session/StatefulDuplicateDestroyComponent.java"
},
PROBLEM_TYPE,
SeamCoreValidator.MESSAGE_ID_ATTRIBUTE_NAME,
SeamCoreValidator.DUPLICATE_DESTROY_MESSAGE_ID,
DeleteAnnotationMarkerResolution.class);
}
public void testDuplicateDestroyAnnotationResolution2() throws CoreException {
MarkerResolutionTestUtil.checkResolution(project,
new String[]{
"src/action/org/domain/SeamWebWarTestProject/session/StatelessClass.java"
},
PROBLEM_TYPE,
SeamCoreValidator.MESSAGE_ID_ATTRIBUTE_NAME,
SeamCoreValidator.DUPLICATE_DESTROY_MESSAGE_ID,
DeleteAnnotationMarkerResolution.class);
}
public void testDuplicateCreateAnnotationResolution() throws CoreException {
MarkerResolutionTestUtil.checkResolution(project,
new String[]{
"src/action/org/domain/SeamWebWarTestProject/session/StatefulDuplicateCreateComponent.java"
},
PROBLEM_TYPE,
SeamCoreValidator.MESSAGE_ID_ATTRIBUTE_NAME,
SeamCoreValidator.DUPLICATE_CREATE_MESSAGE_ID,
DeleteAnnotationMarkerResolution.class);
}
public void testDuplicateUnwrapAnnotationResolution() throws CoreException {
MarkerResolutionTestUtil.checkResolution(project,
new String[]{
"src/action/org/domain/SeamWebWarTestProject/session/StatefulDuplicateUnwrapComponent.java"
},
PROBLEM_TYPE,
SeamCoreValidator.MESSAGE_ID_ATTRIBUTE_NAME,
SeamCoreValidator.DUPLICATE_UNWRAP_MESSAGE_ID,
DeleteAnnotationMarkerResolution.class);
}
public void testOnlyComponentClassCanHaveCreateMethodResolution() throws CoreException {
MarkerResolutionTestUtil.checkResolution(project,
new String[]{
"src/action/org/domain/SeamWebWarTestProject/session/NonComponentWithCreateMethod.java"
},
PROBLEM_TYPE,
SeamCoreValidator.MESSAGE_ID_ATTRIBUTE_NAME,
SeamCoreValidator.CREATE_DOESNT_BELONG_TO_COMPONENT_MESSAGE_ID,
DeleteAnnotationMarkerResolution.class);
}
public void testOnlyComponentClassCanHaveCreateMethodResolution2() throws CoreException {
MarkerResolutionTestUtil.checkResolution(project,
new String[]{
"src/action/org/domain/SeamWebWarTestProject/session/NonComponentWithCreateMethod.java"
},
PROBLEM_TYPE,
SeamCoreValidator.MESSAGE_ID_ATTRIBUTE_NAME,
SeamCoreValidator.CREATE_DOESNT_BELONG_TO_COMPONENT_MESSAGE_ID,
AddAnnotationMarkerResolution.class);
}
public void testOnlyComponentClassCanHaveUnwrapMethodResolution() throws CoreException {
MarkerResolutionTestUtil.checkResolution(project,
new String[]{
"src/action/org/domain/SeamWebWarTestProject/session/NonComponentWithUnwrapMethod.java"
},
PROBLEM_TYPE,
SeamCoreValidator.MESSAGE_ID_ATTRIBUTE_NAME,
SeamCoreValidator.UNWRAP_DOESNT_BELONG_TO_COMPONENT_MESSAGE_ID,
DeleteAnnotationMarkerResolution.class);
}
public void testOnlyComponentClassCanHaveUnwrapMethodResolution2() throws CoreException {
MarkerResolutionTestUtil.checkResolution(project,
new String[]{
"src/action/org/domain/SeamWebWarTestProject/session/NonComponentWithUnwrapMethod.java"
},
PROBLEM_TYPE,
SeamCoreValidator.MESSAGE_ID_ATTRIBUTE_NAME,
SeamCoreValidator.UNWRAP_DOESNT_BELONG_TO_COMPONENT_MESSAGE_ID,
AddAnnotationMarkerResolution.class);
}
public void testOnlyComponentClassCanHaveObserverMethodResolution() throws CoreException {
MarkerResolutionTestUtil.checkResolution(project,
new String[]{
"src/action/org/domain/SeamWebWarTestProject/session/NonComponentWithObserverMethod.java"
},
PROBLEM_TYPE,
SeamCoreValidator.MESSAGE_ID_ATTRIBUTE_NAME,
SeamCoreValidator.OBSERVER_DOESNT_BELONG_TO_COMPONENT_MESSAGE_ID,
DeleteAnnotationMarkerResolution.class);
}
public void testOnlyComponentClassCanHaveObserverMethodResolution2() throws CoreException {
MarkerResolutionTestUtil.checkResolution(project,
new String[]{
"src/action/org/domain/SeamWebWarTestProject/session/NonComponentWithObserverMethod.java"
},
PROBLEM_TYPE,
SeamCoreValidator.MESSAGE_ID_ATTRIBUTE_NAME,
SeamCoreValidator.OBSERVER_DOESNT_BELONG_TO_COMPONENT_MESSAGE_ID,
AddAnnotationMarkerResolution.class);
}
public void testDuplicateComponentNameResolution() throws CoreException {
MarkerResolutionTestUtil.checkResolution(project,
new String[]{
"src/action/org/domain/SeamWebWarTestProject/session/DuplicateComponent1.java"
},
PROBLEM_TYPE,
SeamCoreValidator.MESSAGE_ID_ATTRIBUTE_NAME,
SeamCoreValidator.NONUNIQUE_COMPONENT_NAME_MESSAGE_ID,
DeleteAnnotationMarkerResolution.class);
}
public void testDuplicateComponentNameResolution2() throws CoreException {
MarkerResolutionTestUtil.checkResolution(project,
new String[]{
"src/action/org/domain/SeamWebWarTestProject/session/DuplicateComponent1.java"
},
PROBLEM_TYPE,
SeamCoreValidator.MESSAGE_ID_ATTRIBUTE_NAME,
SeamCoreValidator.NONUNIQUE_COMPONENT_NAME_MESSAGE_ID,
RenameAnnotationMarkerResolution.class);
}
public void testAddRemoveMethodResolution() throws CoreException {
MarkerResolutionTestUtil.checkResolution(project,
new String[]{
"src/action/org/domain/SeamWebWarTestProject/session/StatefulComponentWithoutRemove.java"
},
PROBLEM_TYPE,
SeamCoreValidator.MESSAGE_ID_ATTRIBUTE_NAME,
SeamCoreValidator.STATEFUL_COMPONENT_DOES_NOT_CONTAIN_REMOVE_ID,
AddAnnotatedMethodMarkerResolution.class);
}
public void testAddDestroyMethodResolution() throws CoreException {
MarkerResolutionTestUtil.checkResolution(project,
new String[]{
"src/action/org/domain/SeamWebWarTestProject/session/StatefulComponentWithoutDestroy.java"
},
PROBLEM_TYPE,
SeamCoreValidator.MESSAGE_ID_ATTRIBUTE_NAME,
SeamCoreValidator.STATEFUL_COMPONENT_DOES_NOT_CONTAIN_DESTROY_ID,
AddAnnotatedMethodMarkerResolution.class);
}
public void testChangeScopeResolution() throws CoreException {
MarkerResolutionTestUtil.checkResolution(project,
new String[]{
"src/action/org/domain/SeamWebWarTestProject/session/StatefulComponentWithWrongScope.java"
},
PROBLEM_TYPE,
SeamCoreValidator.MESSAGE_ID_ATTRIBUTE_NAME,
SeamCoreValidator.STATEFUL_COMPONENT_WRONG_SCOPE_ID,
ChangeScopeMarkerResolution.class);
}
public void testChangeScopeResolution2() throws CoreException {
MarkerResolutionTestUtil.checkResolution(project,
new String[]{
"src/action/org/domain/SeamWebWarTestProject/entity/EntityComponentWithWrongScope.java"
},
PROBLEM_TYPE,
SeamCoreValidator.MESSAGE_ID_ATTRIBUTE_NAME,
SeamCoreValidator.ENTITY_COMPONENT_WRONG_SCOPE_ID,
ChangeScopeMarkerResolution.class);
}
public void testAddSetterForProperty() throws CoreException {
MarkerResolutionTestUtil.checkResolution(project,
new String[]{
"WebContent/WEB-INF/components.xml"
},
PROBLEM_TYPE,
SeamCoreValidator.MESSAGE_ID_ATTRIBUTE_NAME,
SeamCoreValidator.UNKNOWN_COMPONENT_PROPERTY_ID,
AddSetterMarkerResolution.class);
}
}