diff --git a/com.avaloq.tools.ddk.check.ui.test/src/com/avaloq/tools/ddk/check/ui/test/builder/CheckMarkerHelpExtensionTest.java b/com.avaloq.tools.ddk.check.ui.test/src/com/avaloq/tools/ddk/check/ui/test/builder/CheckMarkerHelpExtensionTest.java index 4f9be59d74..91696919a5 100644 --- a/com.avaloq.tools.ddk.check.ui.test/src/com/avaloq/tools/ddk/check/ui/test/builder/CheckMarkerHelpExtensionTest.java +++ b/com.avaloq.tools.ddk.check.ui.test/src/com/avaloq/tools/ddk/check/ui/test/builder/CheckMarkerHelpExtensionTest.java @@ -11,6 +11,7 @@ package com.avaloq.tools.ddk.check.ui.test.builder; import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.assertFalse; import static org.junit.jupiter.api.Assertions.assertTrue; import java.util.List; @@ -72,6 +73,62 @@ public class CheckMarkerHelpExtensionTest { @Inject private IWorkspace workspace; + @Test + public void testMatchingMarkerHelpNeedsNoUpdate() throws Exception { + CheckCatalog catalog = parser.parse(CATALOG_WITH_FIRST_CHECK_LIVE); + IPluginExtension extension = createMarkerHelpExtension(catalog); + IPluginElement element = (IPluginElement) extension.getChildren()[0]; + catalog.getChecks().get(0).setKind(null); + assertFalse(markerUtil.isExtensionUpdateRequired(catalog, extension, List.of(element)), "Matching marker help and default kind need no update"); + } + + @Test + public void testMissingContextWithEqualIssueCountNeedsUpdate() throws Exception { + CheckCatalog catalog = parser.parse(CATALOG_WITH_FIRST_CHECK_LIVE); + IPluginExtension extension = createMarkerHelpExtension(catalog); + IPluginElement element = (IPluginElement) extension.getChildren()[0]; + element.setAttribute(CheckMarkerHelpExtensionHelper.CONTEXT_ID_ATTRIBUTE_TAG, "null.c_missing"); + assertTrue(markerUtil.isExtensionUpdateRequired(catalog, extension, List.of(element)), "An equal-sized entry for another context must not match"); + } + + @Test + public void testWrongMarkerTypeNeedsUpdate() throws Exception { + CheckCatalog catalog = parser.parse(CATALOG_WITH_FIRST_CHECK_LIVE); + IPluginExtension extension = createMarkerHelpExtension(catalog); + IPluginElement element = (IPluginElement) extension.getChildren()[0]; + element.setAttribute(CheckMarkerHelpExtensionHelper.MARKERTYPE_ATTRIBUTE_TAG, MARKERTYPE_EXPENSIVE); + assertTrue(markerUtil.isExtensionUpdateRequired(catalog, extension, List.of(element)), "The issue code alone must not match a different marker type"); + } + + @Test + public void testWrongIssueCodeNeedsUpdate() throws Exception { + CheckCatalog catalog = parser.parse(CATALOG_WITH_FIRST_CHECK_LIVE); + IPluginExtension extension = createMarkerHelpExtension(catalog); + IPluginElement element = (IPluginElement) extension.getChildren()[0]; + IPluginElement attribute = (IPluginElement) element.getChildren()[0]; + attribute.setAttribute(CheckMarkerHelpExtensionHelper.ATTRIBUTE_VALUE_TAG, "wrong.issue.code"); + assertTrue(markerUtil.isExtensionUpdateRequired(catalog, extension, List.of(element)), "The marker type alone must not match a different issue code"); + } + + @Test + public void testNullMarkerTypeNeedsUpdate() throws Exception { + CheckCatalog catalog = parser.parse(CATALOG_WITH_FIRST_CHECK_LIVE); + IPluginExtension extension = createMarkerHelpExtension(catalog); + IPluginElement element = (IPluginElement) extension.getChildren()[0]; + element.getAttribute(CheckMarkerHelpExtensionHelper.MARKERTYPE_ATTRIBUTE_TAG).setValue(null); + assertTrue(markerUtil.isExtensionUpdateRequired(catalog, extension, List.of(element)), "A null marker type must be treated as a non-match"); + } + + @Test + public void testNullIssueCodeNeedsUpdate() throws Exception { + CheckCatalog catalog = parser.parse(CATALOG_WITH_FIRST_CHECK_LIVE); + IPluginExtension extension = createMarkerHelpExtension(catalog); + IPluginElement element = (IPluginElement) extension.getChildren()[0]; + IPluginElement attribute = (IPluginElement) element.getChildren()[0]; + attribute.getAttribute(CheckMarkerHelpExtensionHelper.ATTRIBUTE_VALUE_TAG).setValue(null); + assertTrue(markerUtil.isExtensionUpdateRequired(catalog, extension, List.of(element)), "A null issue code must be treated as a non-match"); + } + /** * Tests if the marker help extension is correctly created. * diff --git a/com.avaloq.tools.ddk.check.ui/META-INF/MANIFEST.MF b/com.avaloq.tools.ddk.check.ui/META-INF/MANIFEST.MF index f758ec05cb..1ecbefc599 100644 --- a/com.avaloq.tools.ddk.check.ui/META-INF/MANIFEST.MF +++ b/com.avaloq.tools.ddk.check.ui/META-INF/MANIFEST.MF @@ -2,7 +2,7 @@ Manifest-Version: 1.0 Bundle-ManifestVersion: 2 Bundle-Name: com.avaloq.tools.ddk.check.ui Bundle-SymbolicName: com.avaloq.tools.ddk.check.ui;singleton:=true -Bundle-Version: 17.3.3.qualifier +Bundle-Version: 17.3.4.qualifier Bundle-Vendor: Avaloq Group AG Bundle-RequiredExecutionEnvironment: JavaSE-21 Bundle-Activator: com.avaloq.tools.ddk.check.ui.internal.Activator diff --git a/com.avaloq.tools.ddk.check.ui/pom.xml b/com.avaloq.tools.ddk.check.ui/pom.xml index 3dfe11a365..06ef562dc9 100644 --- a/com.avaloq.tools.ddk.check.ui/pom.xml +++ b/com.avaloq.tools.ddk.check.ui/pom.xml @@ -6,8 +6,8 @@ 18.0.1-SNAPSHOT ../ddk-parent - 17.3.3-SNAPSHOT + 17.3.4-SNAPSHOT com.avaloq.tools.ddk com.avaloq.tools.ddk.check.ui eclipse-plugin - \ No newline at end of file + diff --git a/com.avaloq.tools.ddk.check.ui/src/com/avaloq/tools/ddk/check/ui/builder/util/CheckMarkerHelpExtensionHelper.java b/com.avaloq.tools.ddk.check.ui/src/com/avaloq/tools/ddk/check/ui/builder/util/CheckMarkerHelpExtensionHelper.java index a0aa5d2bcc..27dc61d6f7 100644 --- a/com.avaloq.tools.ddk.check.ui/src/com/avaloq/tools/ddk/check/ui/builder/util/CheckMarkerHelpExtensionHelper.java +++ b/com.avaloq.tools.ddk.check.ui/src/com/avaloq/tools/ddk/check/ui/builder/util/CheckMarkerHelpExtensionHelper.java @@ -13,7 +13,6 @@ import java.util.Collections; import java.util.List; import java.util.NoSuchElementException; -import java.util.Set; import org.eclipse.core.resources.IResource; import org.eclipse.core.runtime.CoreException; @@ -138,7 +137,6 @@ public String apply(final XIssueExpression input) { } @Override - @SuppressWarnings("PMD.UnusedReturnValue") // Preserve the existing exception-based existence check. public boolean isExtensionUpdateRequired(final CheckCatalog catalog, final IPluginExtension extension, final Iterable elements) { // TODO should check if this check is too expensive; consider rewriting contents instead if (!super.isExtensionUpdateRequired(catalog, extension, elements)) { @@ -179,20 +177,8 @@ public String apply(final Pair input) { final Iterable allModelIssueCodes = getIssueCodeValues(check); for (final String issueCode : allModelIssueCodes) { final String contextId = getQualifiedContextId(extension, check); - if (contextToValue.containsKey(contextId)) { - Set> modeToValues = contextToValue.get(contextId); - try { - Iterables.find(modeToValues, new Predicate>() { - @Override - public boolean apply(final Pair input) { - return input.getFirst().equals(getCheckType(check)) && input.getSecond().equals(issueCode); - } - }); - } catch (NoSuchElementException e) { - return true; - } - } else { - return true; // context id not present in extension model + if (!contextToValue.containsEntry(contextId, Tuples.create(getCheckType(check), issueCode))) { + return true; } } } diff --git a/com.avaloq.tools.ddk.checkcfg.ide/META-INF/MANIFEST.MF b/com.avaloq.tools.ddk.checkcfg.ide/META-INF/MANIFEST.MF index ef52de704c..41400bbea6 100644 --- a/com.avaloq.tools.ddk.checkcfg.ide/META-INF/MANIFEST.MF +++ b/com.avaloq.tools.ddk.checkcfg.ide/META-INF/MANIFEST.MF @@ -2,7 +2,7 @@ Manifest-Version: 1.0 Bundle-ManifestVersion: 2 Bundle-Name: com.avaloq.tools.ddk.checkcfg.ide Bundle-SymbolicName: com.avaloq.tools.ddk.checkcfg.ide;singleton:=true -Bundle-Version: 17.3.2.qualifier +Bundle-Version: 17.3.3.qualifier Bundle-Vendor: Avaloq Group AG Bundle-RequiredExecutionEnvironment: JavaSE-21 Bundle-ActivationPolicy: lazy diff --git a/com.avaloq.tools.ddk.checkcfg.ide/pom.xml b/com.avaloq.tools.ddk.checkcfg.ide/pom.xml index d5ad5bd70e..3bd543ff09 100644 --- a/com.avaloq.tools.ddk.checkcfg.ide/pom.xml +++ b/com.avaloq.tools.ddk.checkcfg.ide/pom.xml @@ -6,8 +6,8 @@ 18.0.1-SNAPSHOT ../ddk-parent - 17.3.2-SNAPSHOT + 17.3.3-SNAPSHOT com.avaloq.tools.ddk com.avaloq.tools.ddk.checkcfg.ide eclipse-plugin - \ No newline at end of file + diff --git a/com.avaloq.tools.ddk.checkcfg.ide/src/com/avaloq/tools/ddk/checkcfg/ide/contentassist/CheckCfgIdeContentProposalProvider.java b/com.avaloq.tools.ddk.checkcfg.ide/src/com/avaloq/tools/ddk/checkcfg/ide/contentassist/CheckCfgIdeContentProposalProvider.java index 1f462ea6b1..118360b99d 100644 --- a/com.avaloq.tools.ddk.checkcfg.ide/src/com/avaloq/tools/ddk/checkcfg/ide/contentassist/CheckCfgIdeContentProposalProvider.java +++ b/com.avaloq.tools.ddk.checkcfg.ide/src/com/avaloq/tools/ddk/checkcfg/ide/contentassist/CheckCfgIdeContentProposalProvider.java @@ -12,7 +12,6 @@ package com.avaloq.tools.ddk.checkcfg.ide.contentassist; import java.util.List; -import java.util.NoSuchElementException; import java.util.StringJoiner; import org.eclipse.emf.ecore.EObject; @@ -304,23 +303,15 @@ private void addCatalogConfigurations(final ContentAssistContext context, final * the catalog * @return true, if is catalog configured */ - @SuppressWarnings("PMD.UnusedReturnValue") // Preserve the existing exception-based existence check. private boolean isCatalogConfigured(final CheckConfiguration conf, final CheckCatalog catalog) { - try { - Iterables.find(conf.getLegacyCatalogConfigurations(), new Predicate() { - @Override - public boolean apply(final ConfiguredCatalog input) { - if (input.getCatalog() == null || input.getCatalog().getName() == null || input.getCatalog().getPackageName() == null) { - return false; - } - return catalog == input.getCatalog() - || (input.getCatalog().getName().equals(catalog.getName()) && input.getCatalog().getPackageName().equals(catalog.getPackageName())); - } - }); - } catch (NoSuchElementException e) { - return false; - } - return true; + return Iterables.any(conf.getLegacyCatalogConfigurations(), input -> { + CheckCatalog configured = input.getCatalog(); + if (configured == null || configured.getName() == null || configured.getPackageName() == null) { + return false; + } + return catalog == configured + || (configured.getName().equals(catalog.getName()) && configured.getPackageName().equals(catalog.getPackageName())); + }); } private void addEmptyCheckConfig(final ContentAssistContext context, final IIdeContentProposalAcceptor acceptor) { diff --git a/com.avaloq.tools.ddk.checkcfg.ui/META-INF/MANIFEST.MF b/com.avaloq.tools.ddk.checkcfg.ui/META-INF/MANIFEST.MF index e0b61fd83b..c25d239b92 100644 --- a/com.avaloq.tools.ddk.checkcfg.ui/META-INF/MANIFEST.MF +++ b/com.avaloq.tools.ddk.checkcfg.ui/META-INF/MANIFEST.MF @@ -2,7 +2,7 @@ Manifest-Version: 1.0 Bundle-ManifestVersion: 2 Bundle-Name: com.avaloq.tools.ddk.checkcfg.ui Bundle-SymbolicName: com.avaloq.tools.ddk.checkcfg.ui;singleton:=true -Bundle-Version: 17.3.3.qualifier +Bundle-Version: 17.3.4.qualifier Bundle-Vendor: Avaloq Group AG Bundle-RequiredExecutionEnvironment: JavaSE-21 Bundle-Activator: com.avaloq.tools.ddk.checkcfg.ui.internal.Activator diff --git a/com.avaloq.tools.ddk.checkcfg.ui/pom.xml b/com.avaloq.tools.ddk.checkcfg.ui/pom.xml index aaa413047c..0f6dab26ee 100644 --- a/com.avaloq.tools.ddk.checkcfg.ui/pom.xml +++ b/com.avaloq.tools.ddk.checkcfg.ui/pom.xml @@ -6,8 +6,8 @@ 18.0.1-SNAPSHOT ../ddk-parent - 17.3.3-SNAPSHOT + 17.3.4-SNAPSHOT com.avaloq.tools.ddk com.avaloq.tools.ddk.checkcfg.ui eclipse-plugin - \ No newline at end of file + diff --git a/com.avaloq.tools.ddk.checkcfg.ui/src/com/avaloq/tools/ddk/checkcfg/ui/templates/CheckCfgTemplateProposalProvider.java b/com.avaloq.tools.ddk.checkcfg.ui/src/com/avaloq/tools/ddk/checkcfg/ui/templates/CheckCfgTemplateProposalProvider.java index ff2420fc9b..2c308b29cd 100644 --- a/com.avaloq.tools.ddk.checkcfg.ui/src/com/avaloq/tools/ddk/checkcfg/ui/templates/CheckCfgTemplateProposalProvider.java +++ b/com.avaloq.tools.ddk.checkcfg.ui/src/com/avaloq/tools/ddk/checkcfg/ui/templates/CheckCfgTemplateProposalProvider.java @@ -11,7 +11,6 @@ package com.avaloq.tools.ddk.checkcfg.ui.templates; import java.util.List; -import java.util.NoSuchElementException; import java.util.StringJoiner; import org.eclipse.emf.ecore.util.EcoreUtil; @@ -43,7 +42,6 @@ import com.avaloq.tools.ddk.checkcfg.ui.labeling.CheckCfgImages; import com.avaloq.tools.ddk.xtext.ui.templates.TemplateProposalProviderHelper; import com.google.common.base.Function; -import com.google.common.base.Predicate; import com.google.common.base.Predicates; import com.google.common.collect.Iterables; import com.google.common.collect.Lists; @@ -175,23 +173,15 @@ private void addCatalogConfigurations(final TemplateContext templateContext, fin * the catalog * @return true, if is catalog configured */ - @SuppressWarnings("PMD.UnusedReturnValue") // Preserve the existing exception-based existence check. private boolean isCatalogConfigured(final CheckConfiguration conf, final CheckCatalog catalog) { - try { - Iterables.find(conf.getLegacyCatalogConfigurations(), new Predicate() { - @Override - public boolean apply(final ConfiguredCatalog input) { - if (input.getCatalog() == null || input.getCatalog().getName() == null || input.getCatalog().getPackageName() == null) { - return false; - } - return catalog == input.getCatalog() - || (input.getCatalog().getName().equals(catalog.getName()) && input.getCatalog().getPackageName().equals(catalog.getPackageName())); - } - }); - } catch (NoSuchElementException e) { - return false; - } - return true; + return Iterables.any(conf.getLegacyCatalogConfigurations(), input -> { + CheckCatalog configured = input.getCatalog(); + if (configured == null || configured.getName() == null || configured.getPackageName() == null) { + return false; + } + return catalog == configured + || (configured.getName().equals(catalog.getName()) && configured.getPackageName().equals(catalog.getPackageName())); + }); } /** diff --git a/com.avaloq.tools.ddk.feature/feature.xml b/com.avaloq.tools.ddk.feature/feature.xml index 535be10137..84feafab7b 100644 --- a/com.avaloq.tools.ddk.feature/feature.xml +++ b/com.avaloq.tools.ddk.feature/feature.xml @@ -2,7 +2,7 @@ diff --git a/com.avaloq.tools.ddk.feature/pom.xml b/com.avaloq.tools.ddk.feature/pom.xml index 52f529f547..50162e1c55 100644 --- a/com.avaloq.tools.ddk.feature/pom.xml +++ b/com.avaloq.tools.ddk.feature/pom.xml @@ -7,7 +7,7 @@ 18.0.1-SNAPSHOT ../ddk-parent - 19.2.0-SNAPSHOT + 19.2.1-SNAPSHOT com.avaloq.tools.ddk.feature eclipse-feature diff --git a/com.avaloq.tools.ddk.runtime.feature/feature.xml b/com.avaloq.tools.ddk.runtime.feature/feature.xml index 90ac68a475..ee173dcde7 100644 --- a/com.avaloq.tools.ddk.runtime.feature/feature.xml +++ b/com.avaloq.tools.ddk.runtime.feature/feature.xml @@ -2,7 +2,7 @@ diff --git a/com.avaloq.tools.ddk.runtime.feature/pom.xml b/com.avaloq.tools.ddk.runtime.feature/pom.xml index 3b371ee238..a74eca3a49 100644 --- a/com.avaloq.tools.ddk.runtime.feature/pom.xml +++ b/com.avaloq.tools.ddk.runtime.feature/pom.xml @@ -6,7 +6,7 @@ 18.0.1-SNAPSHOT ../ddk-parent - 19.2.0-SNAPSHOT + 19.2.1-SNAPSHOT com.avaloq.tools.ddk.runtime.feature eclipse-feature diff --git a/com.avaloq.tools.ddk.test.ui/META-INF/MANIFEST.MF b/com.avaloq.tools.ddk.test.ui/META-INF/MANIFEST.MF index 51a399401f..2fc4c34685 100644 --- a/com.avaloq.tools.ddk.test.ui/META-INF/MANIFEST.MF +++ b/com.avaloq.tools.ddk.test.ui/META-INF/MANIFEST.MF @@ -2,7 +2,7 @@ Manifest-Version: 1.0 Bundle-ManifestVersion: 2 Bundle-Name: com.avaloq.tools.ddk.test.ui Bundle-SymbolicName: com.avaloq.tools.ddk.test.ui;singleton:=true -Bundle-Version: 17.3.3.qualifier +Bundle-Version: 17.3.4.qualifier Bundle-Vendor: Avaloq Group AG Bundle-RequiredExecutionEnvironment: JavaSE-21 Bundle-Activator: com.avaloq.tools.ddk.test.ui.Activator diff --git a/com.avaloq.tools.ddk.test.ui/pom.xml b/com.avaloq.tools.ddk.test.ui/pom.xml index 64119659b1..6cbdad4697 100644 --- a/com.avaloq.tools.ddk.test.ui/pom.xml +++ b/com.avaloq.tools.ddk.test.ui/pom.xml @@ -6,7 +6,7 @@ 18.0.1-SNAPSHOT ../ddk-parent - 17.3.3-SNAPSHOT + 17.3.4-SNAPSHOT com.avaloq.tools.ddk.test.ui eclipse-plugin diff --git a/com.avaloq.tools.ddk.xtext.expression/META-INF/MANIFEST.MF b/com.avaloq.tools.ddk.xtext.expression/META-INF/MANIFEST.MF index a63a30d469..fcdb8562b9 100644 --- a/com.avaloq.tools.ddk.xtext.expression/META-INF/MANIFEST.MF +++ b/com.avaloq.tools.ddk.xtext.expression/META-INF/MANIFEST.MF @@ -2,7 +2,7 @@ Manifest-Version: 1.0 Bundle-ManifestVersion: 2 Bundle-Name: com.avaloq.tools.ddk.xtext.expression Bundle-SymbolicName: com.avaloq.tools.ddk.xtext.expression;singleton:=true -Bundle-Version: 17.3.3.qualifier +Bundle-Version: 17.3.4.qualifier Bundle-Vendor: Avaloq Group AG Bundle-RequiredExecutionEnvironment: JavaSE-21 Require-Bundle: org.eclipse.xtext, diff --git a/com.avaloq.tools.ddk.xtext.expression/pom.xml b/com.avaloq.tools.ddk.xtext.expression/pom.xml index ce074bc3c9..c57c8eb6ac 100644 --- a/com.avaloq.tools.ddk.xtext.expression/pom.xml +++ b/com.avaloq.tools.ddk.xtext.expression/pom.xml @@ -6,7 +6,7 @@ 18.0.1-SNAPSHOT ../ddk-parent - 17.3.3-SNAPSHOT + 17.3.4-SNAPSHOT com.avaloq.tools.ddk com.avaloq.tools.ddk.xtext.expression eclipse-plugin diff --git a/com.avaloq.tools.ddk.xtext/META-INF/MANIFEST.MF b/com.avaloq.tools.ddk.xtext/META-INF/MANIFEST.MF index 10e4c2811d..d5acfe3e47 100644 --- a/com.avaloq.tools.ddk.xtext/META-INF/MANIFEST.MF +++ b/com.avaloq.tools.ddk.xtext/META-INF/MANIFEST.MF @@ -2,7 +2,7 @@ Manifest-Version: 1.0 Bundle-ManifestVersion: 2 Bundle-Name: com.avaloq.tools.ddk.xtext Bundle-SymbolicName: com.avaloq.tools.ddk.xtext;singleton:=true -Bundle-Version: 17.4.0.qualifier +Bundle-Version: 17.4.1.qualifier Bundle-Vendor: Avaloq Group AG Bundle-RequiredExecutionEnvironment: JavaSE-21 Bundle-ActivationPolicy: lazy diff --git a/com.avaloq.tools.ddk.xtext/pom.xml b/com.avaloq.tools.ddk.xtext/pom.xml index 4c4a2e4dee..547cf3a9b5 100644 --- a/com.avaloq.tools.ddk.xtext/pom.xml +++ b/com.avaloq.tools.ddk.xtext/pom.xml @@ -6,7 +6,7 @@ 18.0.1-SNAPSHOT ../ddk-parent - 17.4.0-SNAPSHOT + 17.4.1-SNAPSHOT com.avaloq.tools.ddk com.avaloq.tools.ddk.xtext eclipse-plugin diff --git a/com.avaloq.tools.ddk.xtext/src/com/avaloq/tools/ddk/xtext/resource/persistence/DirectLinkingResourceStorageLoadable.java b/com.avaloq.tools.ddk.xtext/src/com/avaloq/tools/ddk/xtext/resource/persistence/DirectLinkingResourceStorageLoadable.java index 181c493a03..a2b536f7d5 100644 --- a/com.avaloq.tools.ddk.xtext/src/com/avaloq/tools/ddk/xtext/resource/persistence/DirectLinkingResourceStorageLoadable.java +++ b/com.avaloq.tools.ddk.xtext/src/com/avaloq/tools/ddk/xtext/resource/persistence/DirectLinkingResourceStorageLoadable.java @@ -86,18 +86,11 @@ public int readCompressedInt() throws IOException { return super.readCompressedInt(); } - @SuppressWarnings("PMD.UnusedFormalParameter") - private void handleLoadEObject(final InternalEObject loaded, final BinaryResourceImpl.EObjectInputStream input) throws IOException { - if (modificationTrackingAdapter != null) { - loaded.eAdapters().add(modificationTrackingAdapter); - } - } - @Override public InternalEObject loadEObject() throws IOException { final InternalEObject result = super.loadEObject(); - if (result != null) { - handleLoadEObject(result, this); + if (result != null && modificationTrackingAdapter != null) { + result.eAdapters().add(modificationTrackingAdapter); } return result; } diff --git a/ddk-repository/category.xml b/ddk-repository/category.xml index c9846439c5..899fa99b8f 100644 --- a/ddk-repository/category.xml +++ b/ddk-repository/category.xml @@ -1,9 +1,9 @@ - + - +