1
0
mirror of https://github.com/1C-Company/v8-code-style.git synced 2025-07-17 05:02:20 +02:00

Проверки, которые проверяли названия общих модулей, не учитывали постфиксы (#29)

This commit is contained in:
Александр Капралов
2021-07-24 10:31:06 +03:00
committed by GitHub
parent 70807af57b
commit 5eb8a16501
7 changed files with 388 additions and 52 deletions

View File

@ -9,11 +9,13 @@
*
* Contributors:
* 1C-Soft LLC - initial API and implementation
* Aleksandr Kapralov - issue #14
*******************************************************************************/
package com.e1c.v8codestyle.md.check;
import static com._1c.g5.v8.dt.metadata.mdclass.MdClassPackage.Literals.COMMON_MODULE;
import static com._1c.g5.v8.dt.metadata.mdclass.MdClassPackage.Literals.COMMON_MODULE__CLIENT_MANAGED_APPLICATION;
import static com._1c.g5.v8.dt.metadata.mdclass.MdClassPackage.Literals.COMMON_MODULE__CLIENT_ORDINARY_APPLICATION;
import static com._1c.g5.v8.dt.metadata.mdclass.MdClassPackage.Literals.COMMON_MODULE__EXTERNAL_CONNECTION;
import static com._1c.g5.v8.dt.metadata.mdclass.MdClassPackage.Literals.COMMON_MODULE__GLOBAL;
import static com._1c.g5.v8.dt.metadata.mdclass.MdClassPackage.Literals.COMMON_MODULE__PRIVILEGED;
@ -73,6 +75,7 @@ public final class CommonModuleNameClient
.features(MD_OBJECT__NAME,
COMMON_MODULE__RETURN_VALUES_REUSE,
COMMON_MODULE__CLIENT_MANAGED_APPLICATION,
COMMON_MODULE__CLIENT_ORDINARY_APPLICATION,
COMMON_MODULE__SERVER,
COMMON_MODULE__SERVER_CALL,
COMMON_MODULE__EXTERNAL_CONNECTION,

View File

@ -9,11 +9,13 @@
*
* Contributors:
* 1C-Soft LLC - initial API and implementation
* Aleksandr Kapralov - issue #14
*******************************************************************************/
package com.e1c.v8codestyle.md.check;
import static com._1c.g5.v8.dt.metadata.mdclass.MdClassPackage.Literals.COMMON_MODULE;
import static com._1c.g5.v8.dt.metadata.mdclass.MdClassPackage.Literals.COMMON_MODULE__CLIENT_MANAGED_APPLICATION;
import static com._1c.g5.v8.dt.metadata.mdclass.MdClassPackage.Literals.COMMON_MODULE__CLIENT_ORDINARY_APPLICATION;
import static com._1c.g5.v8.dt.metadata.mdclass.MdClassPackage.Literals.COMMON_MODULE__EXTERNAL_CONNECTION;
import static com._1c.g5.v8.dt.metadata.mdclass.MdClassPackage.Literals.COMMON_MODULE__GLOBAL;
import static com._1c.g5.v8.dt.metadata.mdclass.MdClassPackage.Literals.COMMON_MODULE__PRIVILEGED;
@ -74,6 +76,7 @@ public final class CommonModuleNameClientServer
.features(MD_OBJECT__NAME,
COMMON_MODULE__RETURN_VALUES_REUSE,
COMMON_MODULE__CLIENT_MANAGED_APPLICATION,
COMMON_MODULE__CLIENT_ORDINARY_APPLICATION,
COMMON_MODULE__SERVER,
COMMON_MODULE__SERVER_CALL,
COMMON_MODULE__EXTERNAL_CONNECTION,

View File

@ -9,17 +9,27 @@
*
* Contributors:
* 1C-Soft LLC - initial API and implementation
* Aleksandr Kapralov - issue #14
*******************************************************************************/
package com.e1c.v8codestyle.md.check;
import static com._1c.g5.v8.dt.metadata.mdclass.MdClassPackage.Literals.COMMON_MODULE;
import static com._1c.g5.v8.dt.metadata.mdclass.MdClassPackage.Literals.COMMON_MODULE__CLIENT_MANAGED_APPLICATION;
import static com._1c.g5.v8.dt.metadata.mdclass.MdClassPackage.Literals.COMMON_MODULE__CLIENT_ORDINARY_APPLICATION;
import static com._1c.g5.v8.dt.metadata.mdclass.MdClassPackage.Literals.COMMON_MODULE__EXTERNAL_CONNECTION;
import static com._1c.g5.v8.dt.metadata.mdclass.MdClassPackage.Literals.COMMON_MODULE__GLOBAL;
import static com._1c.g5.v8.dt.metadata.mdclass.MdClassPackage.Literals.COMMON_MODULE__PRIVILEGED;
import static com._1c.g5.v8.dt.metadata.mdclass.MdClassPackage.Literals.COMMON_MODULE__RETURN_VALUES_REUSE;
import static com._1c.g5.v8.dt.metadata.mdclass.MdClassPackage.Literals.COMMON_MODULE__SERVER;
import static com._1c.g5.v8.dt.metadata.mdclass.MdClassPackage.Literals.COMMON_MODULE__SERVER_CALL;
import static com._1c.g5.v8.dt.metadata.mdclass.MdClassPackage.Literals.MD_OBJECT__NAME;
import java.text.MessageFormat;
import java.util.HashMap;
import java.util.Map;
import org.eclipse.core.runtime.IProgressMonitor;
import org.eclipse.emf.ecore.EStructuralFeature;
import com._1c.g5.v8.dt.metadata.mdclass.CommonModule;
import com._1c.g5.v8.dt.metadata.mdclass.ReturnValuesReuse;
@ -64,7 +74,13 @@ public final class CommonModuleNameGlobal
.checkTop()
.features(MD_OBJECT__NAME,
COMMON_MODULE__RETURN_VALUES_REUSE,
COMMON_MODULE__GLOBAL);
COMMON_MODULE__CLIENT_MANAGED_APPLICATION,
COMMON_MODULE__CLIENT_ORDINARY_APPLICATION,
COMMON_MODULE__SERVER,
COMMON_MODULE__SERVER_CALL,
COMMON_MODULE__EXTERNAL_CONNECTION,
COMMON_MODULE__GLOBAL,
COMMON_MODULE__PRIVILEGED);
//@formatter:on
}
@ -73,12 +89,32 @@ public final class CommonModuleNameGlobal
IProgressMonitor monitor)
{
CommonModule commonModule = (CommonModule)object;
if (commonModule.isGlobal() && commonModule.getReturnValuesReuse() == ReturnValuesReuse.DONT_USE)
if (!commonModule.isGlobal() || commonModule.getReturnValuesReuse() != ReturnValuesReuse.DONT_USE)
{
String message = MessageFormat.format(Messages.CommonModuleNameGlobal_message,
parameters.getString(MdObjectNameWithoutSuffix.NAME_SUFFIX_PARAMETER_NAME));
resultAceptor.addIssue(message, MD_OBJECT__NAME);
return;
}
Map<EStructuralFeature, Boolean> valuesServer = new HashMap<>();
for (EStructuralFeature feature : CommonModuleType.TYPE_SERVER_GLOBAL.keySet())
{
valuesServer.put(feature, (Boolean)commonModule.eGet(feature));
}
Map<EStructuralFeature, Boolean> valuesClient = new HashMap<>();
for (EStructuralFeature feature : CommonModuleType.TYPE_CLIENT_GLOBAL.keySet())
{
valuesClient.put(feature, (Boolean)commonModule.eGet(feature));
}
if (!valuesServer.equals(CommonModuleType.TYPE_SERVER_GLOBAL)
&& !valuesClient.equals(CommonModuleType.TYPE_CLIENT_GLOBAL))
{
return;
}
String message = MessageFormat.format(Messages.CommonModuleNameGlobal_message,
parameters.getString(MdObjectNameWithoutSuffix.NAME_SUFFIX_PARAMETER_NAME));
resultAceptor.addIssue(message, MD_OBJECT__NAME);
}
}

View File

@ -9,6 +9,7 @@
*
* Contributors:
* 1C-Soft LLC - initial API and implementation
* Aleksandr Kapralov - issue #14
*******************************************************************************/
package com.e1c.v8codestyle.md.check;
@ -86,7 +87,6 @@ public class MdObjectNameWithoutSuffix
public ITopObjectFilter contributeTopObjectFilter()
{
return (IBmObject topObject, ICheckParameters parameters) -> {
if (!(topObject instanceof MdObject))
{
return false;
@ -105,13 +105,9 @@ public class MdObjectNameWithoutSuffix
return false;
}
List<String> nameSuffixs = List.of(nameSuffix.replace(" ", "").split(",")); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
List<String> nameSuffixes = List.of(nameSuffix.replace(" ", "").split(",")); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
if (nameSuffixs.stream().noneMatch(name::endsWith))
{
return true;
}
return false;
return nameSuffixes.stream().noneMatch(s -> name.indexOf(s, 1) != -1);
};
}
}

View File

@ -1,6 +1,16 @@
/**
/*******************************************************************************
* Copyright (C) 2021, 1C-Soft LLC and others.
*
*/
* This program and the accompanying materials are made
* available under the terms of the Eclipse Public License 2.0
* which is available at https://www.eclipse.org/legal/epl-2.0/
*
* SPDX-License-Identifier: EPL-2.0
*
* Contributors:
* 1C-Soft LLC - initial API and implementation
* Aleksandr Kapralov - issue #14
*******************************************************************************/
package com.e1c.v8codestyle.md.itests;
import static org.junit.Assert.assertNotNull;
@ -19,6 +29,7 @@ import com._1c.g5.v8.bm.integration.AbstractBmTask;
import com._1c.g5.v8.bm.integration.IBmModel;
import com._1c.g5.v8.dt.core.platform.IDtProject;
import com._1c.g5.v8.dt.metadata.mdclass.CommonModule;
import com._1c.g5.v8.dt.metadata.mdclass.ReturnValuesReuse;
import com._1c.g5.v8.dt.validation.marker.Marker;
import com.e1c.g5.v8.dt.testing.check.CheckTestBase;
import com.e1c.v8codestyle.md.check.CommonModuleNameClientServer;
@ -38,16 +49,18 @@ public class CommonModuleNameClientServerTest
private static final String PROJECT_NAME = "CommonModuleName";
private static final String MODULE_DEFAULT_FQN = "CommonModule.CommonModuleName";
@Test
public void testCommonModuleNameClientServer() throws Exception
{
IDtProject dtProject = openProjectAndWaitForValidationFinish(PROJECT_NAME);
assertNotNull(dtProject);
String fqn = "CommonModule.CommonModuleName";
updateCommonModule(dtProject, MODULE_DEFAULT_FQN, CommonModuleType.TYPE_CLIENT_SERVER,
ReturnValuesReuse.DONT_USE, null);
updateCommonModule(dtProject, fqn, CommonModuleType.TYPE_CLIENT_SERVER, null);
long id = getTopObjectIdByFqn(fqn, dtProject);
long id = getTopObjectIdByFqn(MODULE_DEFAULT_FQN, dtProject);
Marker marker = getFirstMarker(CHECK_ID, id, dtProject);
assertNotNull(marker);
}
@ -58,18 +71,64 @@ public class CommonModuleNameClientServerTest
IDtProject dtProject = openProjectAndWaitForValidationFinish(PROJECT_NAME);
assertNotNull(dtProject);
String fqn = "CommonModule.CommonModuleName";
String fqn = "CommonModule.CommonModuleClientServer";
updateCommonModule(dtProject, fqn, CommonModuleType.TYPE_CLIENT_SERVER, "CommonModuleClientServer");
updateCommonModule(dtProject, MODULE_DEFAULT_FQN, CommonModuleType.TYPE_CLIENT_SERVER,
ReturnValuesReuse.DONT_USE, fqn);
fqn = "CommonModule.CommonModuleClientServer";
long id = getTopObjectIdByFqn(fqn, dtProject);
Marker marker = getFirstMarker(CHECK_ID, id, dtProject);
assertNull(marker);
}
@Test
public void testCommonModuleNameClientServerWithPostfixCorrect() throws Exception
{
IDtProject dtProject = openProjectAndWaitForValidationFinish(PROJECT_NAME);
assertNotNull(dtProject);
String fqn = "CommonModule.CommonModuleClientServerPredefined";
updateCommonModule(dtProject, MODULE_DEFAULT_FQN, CommonModuleType.TYPE_CLIENT_SERVER,
ReturnValuesReuse.DONT_USE, fqn);
long id = getTopObjectIdByFqn(fqn, dtProject);
Marker marker = getFirstMarker(CHECK_ID, id, dtProject);
assertNull(marker);
}
@Test
public void testCommonModuleNameClientServerWithPrefixIncorrect() throws Exception
{
IDtProject dtProject = openProjectAndWaitForValidationFinish(PROJECT_NAME);
assertNotNull(dtProject);
String fqn = "CommonModule.ClientServerCommonModule";
updateCommonModule(dtProject, MODULE_DEFAULT_FQN, CommonModuleType.TYPE_CLIENT_SERVER,
ReturnValuesReuse.DONT_USE, fqn);
long id = getTopObjectIdByFqn(fqn, dtProject);
Marker marker = getFirstMarker(CHECK_ID, id, dtProject);
assertNotNull(marker);
}
@Test
public void testCommonModuleNameClientServerReturnValueReuseCorrect() throws Exception
{
IDtProject dtProject = openProjectAndWaitForValidationFinish(PROJECT_NAME);
assertNotNull(dtProject);
updateCommonModule(dtProject, MODULE_DEFAULT_FQN, CommonModuleType.TYPE_CLIENT_SERVER,
ReturnValuesReuse.DURING_SESSION, null);
long id = getTopObjectIdByFqn(MODULE_DEFAULT_FQN, dtProject);
Marker marker = getFirstMarker(CHECK_ID, id, dtProject);
assertNull(marker);
}
private void updateCommonModule(IDtProject dtProject, String fqn, Map<EStructuralFeature, Boolean> types,
String newName)
ReturnValuesReuse returnValueReuse, String newFqn)
{
IBmModel model = bmModelManager.getModel(dtProject);
model.execute(new AbstractBmTask<Void>("change type")
@ -78,16 +137,31 @@ public class CommonModuleNameClientServerTest
public Void execute(IBmTransaction transaction, IProgressMonitor monitor)
{
IBmObject object = transaction.getTopObjectByFqn(fqn);
for (Entry<EStructuralFeature, Boolean> entry : types.entrySet())
{
object.eSet(entry.getKey(), entry.getValue());
}
if (newName != null && object instanceof CommonModule)
if (!(object instanceof CommonModule))
{
CommonModule module = (CommonModule)object;
module.setName(newName);
transaction.updateTopObjectFqn(object, module.eClass().getName() + "." + newName);
return null;
}
CommonModule module = (CommonModule)object;
module.setReturnValuesReuse(returnValueReuse);
if (newFqn != null)
{
String[] fqnArray = newFqn.split("[.]");
if (fqnArray.length == 2)
{
module.setName(fqnArray[1]);
transaction.updateTopObjectFqn(object, newFqn);
}
}
return null;
}
});

View File

@ -1,6 +1,16 @@
/**
/*******************************************************************************
* Copyright (C) 2021, 1C-Soft LLC and others.
*
*/
* This program and the accompanying materials are made
* available under the terms of the Eclipse Public License 2.0
* which is available at https://www.eclipse.org/legal/epl-2.0/
*
* SPDX-License-Identifier: EPL-2.0
*
* Contributors:
* 1C-Soft LLC - initial API and implementation
* Aleksandr Kapralov - issue #14
*******************************************************************************/
package com.e1c.v8codestyle.md.itests;
import static org.junit.Assert.assertNotNull;
@ -19,6 +29,7 @@ import com._1c.g5.v8.bm.integration.AbstractBmTask;
import com._1c.g5.v8.bm.integration.IBmModel;
import com._1c.g5.v8.dt.core.platform.IDtProject;
import com._1c.g5.v8.dt.metadata.mdclass.CommonModule;
import com._1c.g5.v8.dt.metadata.mdclass.ReturnValuesReuse;
import com._1c.g5.v8.dt.validation.marker.Marker;
import com.e1c.g5.v8.dt.testing.check.CheckTestBase;
import com.e1c.v8codestyle.md.check.CommonModuleNameClient;
@ -38,16 +49,18 @@ public class CommonModuleNameClientTest
private static final String PROJECT_NAME = "CommonModuleName";
private static final String MODULE_DEFAULT_FQN = "CommonModule.CommonModuleName";
@Test
public void testCommonModuleNameClient() throws Exception
{
IDtProject dtProject = openProjectAndWaitForValidationFinish(PROJECT_NAME);
assertNotNull(dtProject);
String fqn = "CommonModule.CommonModuleName";
updateCommonModule(dtProject, MODULE_DEFAULT_FQN, CommonModuleType.TYPE_CLIENT, ReturnValuesReuse.DONT_USE,
null);
updateCommonModule(dtProject, fqn, CommonModuleType.TYPE_CLIENT, null);
long id = getTopObjectIdByFqn(fqn, dtProject);
long id = getTopObjectIdByFqn(MODULE_DEFAULT_FQN, dtProject);
Marker marker = getFirstMarker(CHECK_ID, id, dtProject);
assertNotNull(marker);
}
@ -58,18 +71,64 @@ public class CommonModuleNameClientTest
IDtProject dtProject = openProjectAndWaitForValidationFinish(PROJECT_NAME);
assertNotNull(dtProject);
String fqn = "CommonModule.CommonModuleName";
String fqn = "CommonModule.CommonModuleClient";
updateCommonModule(dtProject, fqn, CommonModuleType.TYPE_CLIENT, "CommonModuleClient");
updateCommonModule(dtProject, MODULE_DEFAULT_FQN, CommonModuleType.TYPE_CLIENT, ReturnValuesReuse.DONT_USE,
fqn);
fqn = "CommonModule.CommonModuleClient";
long id = getTopObjectIdByFqn(fqn, dtProject);
Marker marker = getFirstMarker(CHECK_ID, id, dtProject);
assertNull(marker);
}
@Test
public void testCommonModuleNameClientWithPostfixCorrect() throws Exception
{
IDtProject dtProject = openProjectAndWaitForValidationFinish(PROJECT_NAME);
assertNotNull(dtProject);
String fqn = "CommonModule.CommonModuleClientPredefined";
updateCommonModule(dtProject, MODULE_DEFAULT_FQN, CommonModuleType.TYPE_CLIENT, ReturnValuesReuse.DONT_USE,
fqn);
long id = getTopObjectIdByFqn(fqn, dtProject);
Marker marker = getFirstMarker(CHECK_ID, id, dtProject);
assertNull(marker);
}
@Test
public void testCommonModuleNameClientWithPrefixIncorrect() throws Exception
{
IDtProject dtProject = openProjectAndWaitForValidationFinish(PROJECT_NAME);
assertNotNull(dtProject);
String fqn = "CommonModule.ClientCommonModule";
updateCommonModule(dtProject, MODULE_DEFAULT_FQN, CommonModuleType.TYPE_CLIENT, ReturnValuesReuse.DONT_USE,
fqn);
long id = getTopObjectIdByFqn(fqn, dtProject);
Marker marker = getFirstMarker(CHECK_ID, id, dtProject);
assertNotNull(marker);
}
@Test
public void testCommonModuleNameClientReturnValueReuseCorrect() throws Exception
{
IDtProject dtProject = openProjectAndWaitForValidationFinish(PROJECT_NAME);
assertNotNull(dtProject);
updateCommonModule(dtProject, MODULE_DEFAULT_FQN, CommonModuleType.TYPE_CLIENT,
ReturnValuesReuse.DURING_SESSION, null);
long id = getTopObjectIdByFqn(MODULE_DEFAULT_FQN, dtProject);
Marker marker = getFirstMarker(CHECK_ID, id, dtProject);
assertNull(marker);
}
private void updateCommonModule(IDtProject dtProject, String fqn, Map<EStructuralFeature, Boolean> types,
String newName)
ReturnValuesReuse returnValueReuse, String newFqn)
{
IBmModel model = bmModelManager.getModel(dtProject);
model.execute(new AbstractBmTask<Void>("change type")
@ -78,16 +137,31 @@ public class CommonModuleNameClientTest
public Void execute(IBmTransaction transaction, IProgressMonitor monitor)
{
IBmObject object = transaction.getTopObjectByFqn(fqn);
for (Entry<EStructuralFeature, Boolean> entry : types.entrySet())
{
object.eSet(entry.getKey(), entry.getValue());
}
if (newName != null && object instanceof CommonModule)
if (!(object instanceof CommonModule))
{
CommonModule module = (CommonModule)object;
module.setName(newName);
transaction.updateTopObjectFqn(object, module.eClass().getName() + "." + newName);
return null;
}
CommonModule module = (CommonModule)object;
module.setReturnValuesReuse(returnValueReuse);
if (newFqn != null)
{
String[] fqnArray = newFqn.split("[.]");
if (fqnArray.length == 2)
{
module.setName(fqnArray[1]);
transaction.updateTopObjectFqn(object, newFqn);
}
}
return null;
}
});

View File

@ -1,6 +1,16 @@
/**
/*******************************************************************************
* Copyright (C) 2021, 1C-Soft LLC and others.
*
*/
* This program and the accompanying materials are made
* available under the terms of the Eclipse Public License 2.0
* which is available at https://www.eclipse.org/legal/epl-2.0/
*
* SPDX-License-Identifier: EPL-2.0
*
* Contributors:
* 1C-Soft LLC - initial API and implementation
* Aleksandr Kapralov - issue #14
*******************************************************************************/
package com.e1c.v8codestyle.md.itests;
import static org.junit.Assert.assertNotNull;
@ -19,6 +29,7 @@ import com._1c.g5.v8.bm.integration.AbstractBmTask;
import com._1c.g5.v8.bm.integration.IBmModel;
import com._1c.g5.v8.dt.core.platform.IDtProject;
import com._1c.g5.v8.dt.metadata.mdclass.CommonModule;
import com._1c.g5.v8.dt.metadata.mdclass.ReturnValuesReuse;
import com._1c.g5.v8.dt.validation.marker.Marker;
import com.e1c.g5.v8.dt.testing.check.CheckTestBase;
import com.e1c.v8codestyle.md.check.CommonModuleNameGlobal;
@ -34,20 +45,22 @@ public class CommonModuleNameGlobalTest
extends CheckTestBase
{
private static final String CHECK_ID = "common-module-name-global"; //$NON-NLS-1$
private static final String CHECK_ID = "common-module-name-global";
private static final String PROJECT_NAME = "CommonModuleName";
private static final String MODULE_DEFAULT_FQN = "CommonModule.CommonModuleName";
@Test
public void testCommonModuleNameClientGlobal() throws Exception
{
IDtProject dtProject = openProjectAndWaitForValidationFinish(PROJECT_NAME);
assertNotNull(dtProject);
String fqn = "CommonModule.CommonModuleName";
updateCommonModule(dtProject, MODULE_DEFAULT_FQN, CommonModuleType.TYPE_CLIENT_GLOBAL,
ReturnValuesReuse.DONT_USE, null);
updateCommonModule(dtProject, fqn, CommonModuleType.TYPE_CLIENT_GLOBAL, null);
long id = getTopObjectIdByFqn(fqn, dtProject);
long id = getTopObjectIdByFqn(MODULE_DEFAULT_FQN, dtProject);
Marker marker = getFirstMarker(CHECK_ID, id, dtProject);
assertNotNull(marker);
}
@ -58,18 +71,140 @@ public class CommonModuleNameGlobalTest
IDtProject dtProject = openProjectAndWaitForValidationFinish(PROJECT_NAME);
assertNotNull(dtProject);
String fqn = "CommonModule.CommonModuleName";
String fqn = "CommonModule.CommonModuleClientGlobal";
updateCommonModule(dtProject, fqn, CommonModuleType.TYPE_CLIENT_GLOBAL, "CommonModuleClientGlobal");
updateCommonModule(dtProject, MODULE_DEFAULT_FQN, CommonModuleType.TYPE_CLIENT_GLOBAL,
ReturnValuesReuse.DONT_USE, fqn);
fqn = "CommonModule.CommonModuleClientGlobal";
long id = getTopObjectIdByFqn(fqn, dtProject);
Marker marker = getFirstMarker(CHECK_ID, id, dtProject);
assertNull(marker);
}
@Test
public void testCommonModuleNameClientGlobalWithPostfixCorrect() throws Exception
{
IDtProject dtProject = openProjectAndWaitForValidationFinish(PROJECT_NAME);
assertNotNull(dtProject);
String fqn = "CommonModule.CommonModuleClientGlobalPredefined";
updateCommonModule(dtProject, MODULE_DEFAULT_FQN, CommonModuleType.TYPE_CLIENT_GLOBAL,
ReturnValuesReuse.DONT_USE, fqn);
long id = getTopObjectIdByFqn(fqn, dtProject);
Marker marker = getFirstMarker(CHECK_ID, id, dtProject);
assertNull(marker);
}
@Test
public void testCommonModuleNameClientGlobalWithPrefixIncorrect() throws Exception
{
IDtProject dtProject = openProjectAndWaitForValidationFinish(PROJECT_NAME);
assertNotNull(dtProject);
String fqn = "CommonModule.GlobalCommonModule";
updateCommonModule(dtProject, MODULE_DEFAULT_FQN, CommonModuleType.TYPE_CLIENT_GLOBAL,
ReturnValuesReuse.DONT_USE, fqn);
long id = getTopObjectIdByFqn(fqn, dtProject);
Marker marker = getFirstMarker(CHECK_ID, id, dtProject);
assertNotNull(marker);
}
@Test
public void testCommonModuleNameClientGlobalReturnValueReuseCorrect() throws Exception
{
IDtProject dtProject = openProjectAndWaitForValidationFinish(PROJECT_NAME);
assertNotNull(dtProject);
updateCommonModule(dtProject, MODULE_DEFAULT_FQN, CommonModuleType.TYPE_CLIENT_GLOBAL,
ReturnValuesReuse.DONT_USE, null);
long id = getTopObjectIdByFqn(MODULE_DEFAULT_FQN, dtProject);
Marker marker = getFirstMarker(CHECK_ID, id, dtProject);
assertNotNull(marker);
}
@Test
public void testCommonModuleNameServerGlobal() throws Exception
{
IDtProject dtProject = openProjectAndWaitForValidationFinish(PROJECT_NAME);
assertNotNull(dtProject);
updateCommonModule(dtProject, MODULE_DEFAULT_FQN, CommonModuleType.TYPE_SERVER_GLOBAL,
ReturnValuesReuse.DONT_USE, null);
long id = getTopObjectIdByFqn(MODULE_DEFAULT_FQN, dtProject);
Marker marker = getFirstMarker(CHECK_ID, id, dtProject);
assertNotNull(marker);
}
@Test
public void testCommonModuleNameServerGlobalCorrect() throws Exception
{
IDtProject dtProject = openProjectAndWaitForValidationFinish(PROJECT_NAME);
assertNotNull(dtProject);
String fqn = "CommonModule.CommonModuleServerGlobal";
updateCommonModule(dtProject, MODULE_DEFAULT_FQN, CommonModuleType.TYPE_SERVER_GLOBAL,
ReturnValuesReuse.DONT_USE, fqn);
long id = getTopObjectIdByFqn(fqn, dtProject);
Marker marker = getFirstMarker(CHECK_ID, id, dtProject);
assertNull(marker);
}
@Test
public void testCommonModuleNameServerGlobalWithPostfixCorrect() throws Exception
{
IDtProject dtProject = openProjectAndWaitForValidationFinish(PROJECT_NAME);
assertNotNull(dtProject);
String fqn = "CommonModule.CommonModuleServerGlobalPredefined";
updateCommonModule(dtProject, MODULE_DEFAULT_FQN, CommonModuleType.TYPE_SERVER_GLOBAL,
ReturnValuesReuse.DONT_USE, fqn);
long id = getTopObjectIdByFqn(fqn, dtProject);
Marker marker = getFirstMarker(CHECK_ID, id, dtProject);
assertNull(marker);
}
@Test
public void testCommonModuleNameServerGlobalWithPrefixIncorrect() throws Exception
{
IDtProject dtProject = openProjectAndWaitForValidationFinish(PROJECT_NAME);
assertNotNull(dtProject);
String fqn = "CommonModule.GlobalCommonModule";
updateCommonModule(dtProject, MODULE_DEFAULT_FQN, CommonModuleType.TYPE_SERVER_GLOBAL,
ReturnValuesReuse.DONT_USE, fqn);
long id = getTopObjectIdByFqn(fqn, dtProject);
Marker marker = getFirstMarker(CHECK_ID, id, dtProject);
assertNotNull(marker);
}
@Test
public void testCommonModuleNameServerGlobalReturnValueReuseCorrect() throws Exception
{
IDtProject dtProject = openProjectAndWaitForValidationFinish(PROJECT_NAME);
assertNotNull(dtProject);
updateCommonModule(dtProject, MODULE_DEFAULT_FQN, CommonModuleType.TYPE_SERVER_GLOBAL,
ReturnValuesReuse.DURING_SESSION, null);
long id = getTopObjectIdByFqn(MODULE_DEFAULT_FQN, dtProject);
Marker marker = getFirstMarker(CHECK_ID, id, dtProject);
assertNull(marker);
}
private void updateCommonModule(IDtProject dtProject, String fqn, Map<EStructuralFeature, Boolean> types,
String newName)
ReturnValuesReuse returnValueReuse, String newFqn)
{
IBmModel model = bmModelManager.getModel(dtProject);
model.execute(new AbstractBmTask<Void>("change type")
@ -78,16 +213,31 @@ public class CommonModuleNameGlobalTest
public Void execute(IBmTransaction transaction, IProgressMonitor monitor)
{
IBmObject object = transaction.getTopObjectByFqn(fqn);
for (Entry<EStructuralFeature, Boolean> entry : types.entrySet())
{
object.eSet(entry.getKey(), entry.getValue());
}
if (newName != null && object instanceof CommonModule)
if (!(object instanceof CommonModule))
{
CommonModule module = (CommonModule)object;
module.setName(newName);
transaction.updateTopObjectFqn(object, module.eClass().getName() + "." + newName);
return null;
}
CommonModule module = (CommonModule)object;
module.setReturnValuesReuse(returnValueReuse);
if (newFqn != null)
{
String[] fqnArray = newFqn.split("[.]");
if (fqnArray.length == 2)
{
module.setName(fqnArray[1]);
transaction.updateTopObjectFqn(object, newFqn);
}
}
return null;
}
});