This is an automated email from the ASF dual-hosted git repository. danhaywood pushed a commit to branch ISIS-2222 in repository https://gitbox.apache.org/repos/asf/isis.git
commit ae58e1ac5e78b96a2a92976590736ac67ddfb7d7 Author: danhaywood <[email protected]> AuthorDate: Mon Aug 17 08:21:39 2020 +0100 ISIS-2422: adds support for schema DTOs as value types. ... and extends asciidoc wicket component to render prettily --- .../core/metamodel/IsisModuleCoreMetamodel.java | 6 +- .../facets/schema/IsisSchemaMetaModelRefiner.java | 47 +++++++++ .../facets/schema/IsisSchemaValueTypeProvider.java | 46 +++++++++ .../facets/schema/chg/ChangesDtoValueFacet.java | 20 ++-- ...DtoValueFacetUsingSemanticsProviderFactory.java | 41 ++++++++ .../chg/v2/ChangesDtoValueSemanticsProvider.java | 110 ++++++++++++++++++++ .../facets/schema/cmd/CommandDtoValueFacet.java | 20 ++-- ...DtoValueFacetUsingSemanticsProviderFactory.java | 41 ++++++++ .../cmd/v2/CommandDtoValueSemanticsProvider.java | 113 +++++++++++++++++++++ .../schema/ixn/InteractionDtoValueFacet.java | 20 ++-- ...DtoValueFacetUsingSemanticsProviderFactory.java | 41 ++++++++ .../v2/InteractionDtoValueSemanticsProvider.java | 110 ++++++++++++++++++++ .../ui/wkt/IsisModuleValAsciidocUiWkt.java | 9 ++ .../AsciiDocForXmlComponentWkt.java} | 38 ++++--- .../wkt/components/AsciiDocPanelFactoriesWkt.java | 5 +- .../schema/chg/v2/ChangesDtoComponentWkt.java} | 33 +++--- .../chg/v2/ChangesDtoPanelFactoriesWkt.java} | 33 ++---- .../schema/cmd/v2/CommandDtoComponentWkt.java} | 33 +++--- .../cmd/v2/CommandDtoPanelFactoriesWkt.java} | 33 ++---- .../schema/ixn/v2/InteractionDtoComponentWkt.java} | 33 +++--- .../ixn/v2/InteractionDtoPanelFactoriesWkt.java} | 33 ++---- .../components/scalars/markup/MarkupComponent.java | 16 ++- 22 files changed, 710 insertions(+), 171 deletions(-) diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/IsisModuleCoreMetamodel.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/IsisModuleCoreMetamodel.java index 3b34bde..1e2b3af 100644 --- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/IsisModuleCoreMetamodel.java +++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/IsisModuleCoreMetamodel.java @@ -24,6 +24,8 @@ import org.springframework.context.annotation.Import; import org.apache.isis.applib.IsisModuleApplib; import org.apache.isis.core.config.IsisModuleCoreConfig; import org.apache.isis.core.metamodel.context.MetaModelContexts; +import org.apache.isis.core.metamodel.facets.schema.IsisSchemaMetaModelRefiner; +import org.apache.isis.core.metamodel.facets.schema.IsisSchemaValueTypeProvider; import org.apache.isis.core.metamodel.inspect.IsisModuleCoreMetamodelInspection; import org.apache.isis.core.metamodel.objectmanager.ObjectManagerDefault; import org.apache.isis.core.metamodel.progmodel.ProgrammingModelInitFilterDefault; @@ -99,7 +101,9 @@ import org.apache.isis.core.security.IsisModuleCoreSecurity; // @Repository's ApplicationFeatureRepositoryDefault.class, - + + IsisSchemaMetaModelRefiner.class, + IsisSchemaValueTypeProvider.class, }) public class IsisModuleCoreMetamodel { diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/schema/IsisSchemaMetaModelRefiner.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/schema/IsisSchemaMetaModelRefiner.java new file mode 100644 index 0000000..111187f --- /dev/null +++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/schema/IsisSchemaMetaModelRefiner.java @@ -0,0 +1,47 @@ +/* + * 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. + */ +package org.apache.isis.core.metamodel.facets.schema; + +import javax.inject.Named; + +import org.springframework.stereotype.Component; + +import org.apache.isis.core.metamodel.facetapi.MetaModelRefiner; +import org.apache.isis.core.metamodel.facets.schema.chg.v2.ChangesDtoValueFacetUsingSemanticsProviderFactory; +import org.apache.isis.core.metamodel.facets.schema.cmd.v2.CommandDtoValueFacetUsingSemanticsProviderFactory; +import org.apache.isis.core.metamodel.facets.schema.ixn.v2.InteractionDtoValueFacetUsingSemanticsProviderFactory; +import org.apache.isis.core.metamodel.progmodel.ProgrammingModel; + +@Component +@Named("isisMetaModel.isisSchema.MetaModelRefiner") +public class IsisSchemaMetaModelRefiner implements MetaModelRefiner { + @Override + public void refineProgrammingModel(ProgrammingModel programmingModel) { + programmingModel.addFactory( + ProgrammingModel.FacetProcessingOrder.G1_VALUE_TYPES, + InteractionDtoValueFacetUsingSemanticsProviderFactory.class); + programmingModel.addFactory( + ProgrammingModel.FacetProcessingOrder.G1_VALUE_TYPES, + ChangesDtoValueFacetUsingSemanticsProviderFactory.class); + programmingModel.addFactory( + ProgrammingModel.FacetProcessingOrder.G1_VALUE_TYPES, + CommandDtoValueFacetUsingSemanticsProviderFactory.class); + } +} + diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/schema/IsisSchemaValueTypeProvider.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/schema/IsisSchemaValueTypeProvider.java new file mode 100644 index 0000000..01f96a3 --- /dev/null +++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/schema/IsisSchemaValueTypeProvider.java @@ -0,0 +1,46 @@ +/* + * 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. + */ +package org.apache.isis.core.metamodel.facets.schema; + +import java.util.Arrays; +import java.util.Collection; + +import javax.inject.Named; + +import org.springframework.stereotype.Component; + +import org.apache.isis.core.metamodel.valuetypes.ValueTypeDefinition; +import org.apache.isis.core.metamodel.valuetypes.ValueTypeProvider; +import org.apache.isis.schema.chg.v2.ChangesDto; +import org.apache.isis.schema.cmd.v2.CommandDto; +import org.apache.isis.schema.common.v2.ValueType; +import org.apache.isis.schema.ixn.v2.InteractionDto; + +@Component +@Named("isisMetaModel.isisSchema.ValueTypeProvider") +public class IsisSchemaValueTypeProvider implements ValueTypeProvider { + @Override + public Collection<ValueTypeDefinition> definitions() { + return Arrays.asList( + ValueTypeDefinition.of(InteractionDto.class, ValueType.STRING) + , ValueTypeDefinition.of(ChangesDto.class, ValueType.STRING) + , ValueTypeDefinition.of(CommandDto.class, ValueType.STRING) + ); + } +} diff --git a/valuetypes/asciidoc/ui/wicket/src/main/java/org/apache/isis/valuetypes/asciidoc/ui/wkt/IsisModuleValAsciidocUiWkt.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/schema/chg/ChangesDtoValueFacet.java similarity index 60% copy from valuetypes/asciidoc/ui/wicket/src/main/java/org/apache/isis/valuetypes/asciidoc/ui/wkt/IsisModuleValAsciidocUiWkt.java copy to core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/schema/chg/ChangesDtoValueFacet.java index 0d09de0..e2aa514 100644 --- a/valuetypes/asciidoc/ui/wicket/src/main/java/org/apache/isis/valuetypes/asciidoc/ui/wkt/IsisModuleValAsciidocUiWkt.java +++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/schema/chg/ChangesDtoValueFacet.java @@ -16,19 +16,15 @@ * specific language governing permissions and limitations * under the License. */ -package org.apache.isis.valuetypes.asciidoc.ui.wkt; -import org.springframework.context.annotation.Configuration; -import org.springframework.context.annotation.Import; +package org.apache.isis.core.metamodel.facets.schema.chg; -import org.apache.isis.valuetypes.asciidoc.applib.IsisModuleValAsciidocApplib; -import org.apache.isis.valuetypes.asciidoc.ui.wkt.components.AsciiDocPanelFactoriesWkt; +import org.apache.isis.core.metamodel.facetapi.Facet; +import org.apache.isis.core.metamodel.spec.ManagedObject; + +public interface ChangesDtoValueFacet extends Facet { + + String changesDtoValue(ManagedObject object); + ManagedObject createValue(ManagedObject object, String xml); -@Configuration -@Import({ - IsisModuleValAsciidocApplib.class, - AsciiDocPanelFactoriesWkt.Parented.class, - AsciiDocPanelFactoriesWkt.Standalone.class, -}) -public class IsisModuleValAsciidocUiWkt { } diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/schema/chg/v2/ChangesDtoValueFacetUsingSemanticsProviderFactory.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/schema/chg/v2/ChangesDtoValueFacetUsingSemanticsProviderFactory.java new file mode 100644 index 0000000..6d06b91 --- /dev/null +++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/schema/chg/v2/ChangesDtoValueFacetUsingSemanticsProviderFactory.java @@ -0,0 +1,41 @@ +/* + * 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. + */ + +package org.apache.isis.core.metamodel.facets.schema.chg.v2; + +import org.apache.isis.core.metamodel.facetapi.FacetHolder; +import org.apache.isis.core.metamodel.facets.object.value.vsp.ValueFacetUsingSemanticsProviderFactory; +import org.apache.isis.schema.chg.v2.ChangesDto; + +import lombok.val; + +public class ChangesDtoValueFacetUsingSemanticsProviderFactory extends ValueFacetUsingSemanticsProviderFactory<ChangesDto> { + + @Override + public void process(final ProcessClassContext processClassContext) { + final Class<?> type = processClassContext.getCls(); + final FacetHolder holder = processClassContext.getFacetHolder(); + + if (!(ChangesDto.class.isAssignableFrom(type))) { + return; + } + val provider = new ChangesDtoValueSemanticsProvider(holder); + addFacets(provider); + } +} diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/schema/chg/v2/ChangesDtoValueSemanticsProvider.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/schema/chg/v2/ChangesDtoValueSemanticsProvider.java new file mode 100644 index 0000000..0e1dd82 --- /dev/null +++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/schema/chg/v2/ChangesDtoValueSemanticsProvider.java @@ -0,0 +1,110 @@ +/* + * 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. + */ + +package org.apache.isis.core.metamodel.facets.schema.chg.v2; + +import org.apache.isis.applib.adapters.EncoderDecoder; +import org.apache.isis.applib.adapters.Parser; +import org.apache.isis.applib.util.schema.ChangesDtoUtils; +import org.apache.isis.core.metamodel.facetapi.Facet; +import org.apache.isis.core.metamodel.facetapi.FacetHolder; +import org.apache.isis.core.metamodel.facets.object.value.vsp.ValueSemanticsProviderAndFacetAbstract; +import org.apache.isis.core.metamodel.facets.schema.chg.ChangesDtoValueFacet; +import org.apache.isis.core.metamodel.spec.ManagedObject; +import org.apache.isis.schema.chg.v2.ChangesDto; + +import lombok.val; + +public class ChangesDtoValueSemanticsProvider +extends ValueSemanticsProviderAndFacetAbstract<ChangesDto> +implements ChangesDtoValueFacet { + + private static final int TYPICAL_LENGTH = 0; + + private static Class<? extends Facet> type() { + return ChangesDtoValueFacet.class; + } + + private static final ChangesDto DEFAULT_VALUE = null; + + /** + * Required because implementation of {@link Parser} and + * {@link EncoderDecoder}. + */ + public ChangesDtoValueSemanticsProvider() { + this(null); + } + + public ChangesDtoValueSemanticsProvider(final FacetHolder holder) { + super(type(), holder, ChangesDto.class, TYPICAL_LENGTH, -1, Immutability.IMMUTABLE, EqualByContent.NOT_HONOURED, DEFAULT_VALUE); + } + + + @Override + protected ChangesDto doParse(final Object context, final String str) { + return doRestore(str); + } + + @Override + public String titleString(final Object object) { + if (object == null) return "[null]"; + final ChangesDto changesDto = (ChangesDto) object; + return ChangesDtoUtils.toXml(changesDto); + } + + @Override + public String titleStringWithMask(final Object value, final String usingMask) { + return titleString(value); + } + + + @Override + public String changesDtoValue(final ManagedObject object) { + if (object == null) { + return ""; + } + val changesDto = (ChangesDto) object.getPojo(); + return ChangesDtoUtils.toXml(changesDto); + } + + @Override + public ManagedObject createValue(final ManagedObject object, final String xml) { + val changesDto = ChangesDtoUtils.fromXml(xml); + return getObjectManager().adapt(changesDto); + } + + + @Override + protected String doEncode(final Object object) { + val changesDto = (ChangesDto) object; + return ChangesDtoUtils.toXml(changesDto); + } + + @Override + protected ChangesDto doRestore(final String xml) { + return ChangesDtoUtils.fromXml(xml); + } + + + @Override + public String toString() { + return "InteractionDtoValueSemanticsProvider"; + } + +} diff --git a/valuetypes/asciidoc/ui/wicket/src/main/java/org/apache/isis/valuetypes/asciidoc/ui/wkt/IsisModuleValAsciidocUiWkt.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/schema/cmd/CommandDtoValueFacet.java similarity index 60% copy from valuetypes/asciidoc/ui/wicket/src/main/java/org/apache/isis/valuetypes/asciidoc/ui/wkt/IsisModuleValAsciidocUiWkt.java copy to core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/schema/cmd/CommandDtoValueFacet.java index 0d09de0..12f2b85 100644 --- a/valuetypes/asciidoc/ui/wicket/src/main/java/org/apache/isis/valuetypes/asciidoc/ui/wkt/IsisModuleValAsciidocUiWkt.java +++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/schema/cmd/CommandDtoValueFacet.java @@ -16,19 +16,15 @@ * specific language governing permissions and limitations * under the License. */ -package org.apache.isis.valuetypes.asciidoc.ui.wkt; -import org.springframework.context.annotation.Configuration; -import org.springframework.context.annotation.Import; +package org.apache.isis.core.metamodel.facets.schema.cmd; -import org.apache.isis.valuetypes.asciidoc.applib.IsisModuleValAsciidocApplib; -import org.apache.isis.valuetypes.asciidoc.ui.wkt.components.AsciiDocPanelFactoriesWkt; +import org.apache.isis.core.metamodel.facetapi.Facet; +import org.apache.isis.core.metamodel.spec.ManagedObject; + +public interface CommandDtoValueFacet extends Facet { + + String commandDtoValue(ManagedObject object); + ManagedObject createValue(ManagedObject object, String xml); -@Configuration -@Import({ - IsisModuleValAsciidocApplib.class, - AsciiDocPanelFactoriesWkt.Parented.class, - AsciiDocPanelFactoriesWkt.Standalone.class, -}) -public class IsisModuleValAsciidocUiWkt { } diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/schema/cmd/v2/CommandDtoValueFacetUsingSemanticsProviderFactory.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/schema/cmd/v2/CommandDtoValueFacetUsingSemanticsProviderFactory.java new file mode 100644 index 0000000..b0d377a --- /dev/null +++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/schema/cmd/v2/CommandDtoValueFacetUsingSemanticsProviderFactory.java @@ -0,0 +1,41 @@ +/* + * 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. + */ + +package org.apache.isis.core.metamodel.facets.schema.cmd.v2; + +import org.apache.isis.core.metamodel.facetapi.FacetHolder; +import org.apache.isis.core.metamodel.facets.object.value.vsp.ValueFacetUsingSemanticsProviderFactory; +import org.apache.isis.schema.cmd.v2.CommandDto; + +import lombok.val; + +public class CommandDtoValueFacetUsingSemanticsProviderFactory extends ValueFacetUsingSemanticsProviderFactory<CommandDto> { + + @Override + public void process(final ProcessClassContext processClassContext) { + final Class<?> type = processClassContext.getCls(); + final FacetHolder holder = processClassContext.getFacetHolder(); + + if (!(CommandDto.class.isAssignableFrom(type))) { + return; + } + val provider = new CommandDtoValueSemanticsProvider(holder); + addFacets(provider); + } +} diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/schema/cmd/v2/CommandDtoValueSemanticsProvider.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/schema/cmd/v2/CommandDtoValueSemanticsProvider.java new file mode 100644 index 0000000..16f90e6 --- /dev/null +++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/schema/cmd/v2/CommandDtoValueSemanticsProvider.java @@ -0,0 +1,113 @@ +/* + * 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. + */ + +package org.apache.isis.core.metamodel.facets.schema.cmd.v2; + +import org.apache.isis.applib.adapters.EncoderDecoder; +import org.apache.isis.applib.adapters.Parser; +import org.apache.isis.applib.util.schema.ChangesDtoUtils; +import org.apache.isis.applib.util.schema.CommandDtoUtils; +import org.apache.isis.core.metamodel.facetapi.Facet; +import org.apache.isis.core.metamodel.facetapi.FacetHolder; +import org.apache.isis.core.metamodel.facets.object.value.vsp.ValueSemanticsProviderAndFacetAbstract; +import org.apache.isis.core.metamodel.facets.schema.cmd.CommandDtoValueFacet; +import org.apache.isis.core.metamodel.spec.ManagedObject; +import org.apache.isis.schema.chg.v2.ChangesDto; +import org.apache.isis.schema.cmd.v2.CommandDto; +import org.apache.isis.schema.cmd.v2.CommandsDto; + +import lombok.val; + +public class CommandDtoValueSemanticsProvider +extends ValueSemanticsProviderAndFacetAbstract<CommandDto> +implements CommandDtoValueFacet { + + private static final int TYPICAL_LENGTH = 0; + + private static Class<? extends Facet> type() { + return CommandDtoValueFacet.class; + } + + private static final CommandDto DEFAULT_VALUE = null; + + /** + * Required because implementation of {@link Parser} and + * {@link EncoderDecoder}. + */ + public CommandDtoValueSemanticsProvider() { + this(null); + } + + public CommandDtoValueSemanticsProvider(final FacetHolder holder) { + super(type(), holder, CommandDto.class, TYPICAL_LENGTH, -1, Immutability.IMMUTABLE, EqualByContent.NOT_HONOURED, DEFAULT_VALUE); + } + + + @Override + protected CommandDto doParse(final Object context, final String str) { + return doRestore(str); + } + + @Override + public String titleString(final Object object) { + if (object == null) return "[null]"; + val commandDto = (CommandDto) object; + return CommandDtoUtils.toXml(commandDto); + } + + @Override + public String titleStringWithMask(final Object value, final String usingMask) { + return titleString(value); + } + + + @Override + public String commandDtoValue(final ManagedObject object) { + if (object == null) { + return ""; + } + val commandDto = (CommandDto) object.getPojo(); + return CommandDtoUtils.toXml(commandDto); + } + + @Override + public ManagedObject createValue(final ManagedObject object, final String xml) { + val commandDto = CommandDtoUtils.fromXml(xml); + return getObjectManager().adapt(commandDto); + } + + + @Override + protected String doEncode(final Object object) { + val commandDto = (CommandDto) object; + return CommandDtoUtils.toXml(commandDto); + } + + @Override + protected CommandDto doRestore(final String xml) { + return CommandDtoUtils.fromXml(xml); + } + + + @Override + public String toString() { + return "InteractionDtoValueSemanticsProvider"; + } + +} diff --git a/valuetypes/asciidoc/ui/wicket/src/main/java/org/apache/isis/valuetypes/asciidoc/ui/wkt/IsisModuleValAsciidocUiWkt.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/schema/ixn/InteractionDtoValueFacet.java similarity index 60% copy from valuetypes/asciidoc/ui/wicket/src/main/java/org/apache/isis/valuetypes/asciidoc/ui/wkt/IsisModuleValAsciidocUiWkt.java copy to core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/schema/ixn/InteractionDtoValueFacet.java index 0d09de0..94145ae 100644 --- a/valuetypes/asciidoc/ui/wicket/src/main/java/org/apache/isis/valuetypes/asciidoc/ui/wkt/IsisModuleValAsciidocUiWkt.java +++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/schema/ixn/InteractionDtoValueFacet.java @@ -16,19 +16,15 @@ * specific language governing permissions and limitations * under the License. */ -package org.apache.isis.valuetypes.asciidoc.ui.wkt; -import org.springframework.context.annotation.Configuration; -import org.springframework.context.annotation.Import; +package org.apache.isis.core.metamodel.facets.schema.ixn; -import org.apache.isis.valuetypes.asciidoc.applib.IsisModuleValAsciidocApplib; -import org.apache.isis.valuetypes.asciidoc.ui.wkt.components.AsciiDocPanelFactoriesWkt; +import org.apache.isis.core.metamodel.facetapi.Facet; +import org.apache.isis.core.metamodel.spec.ManagedObject; + +public interface InteractionDtoValueFacet extends Facet { + + String interactionDtoValue(ManagedObject object); + ManagedObject createValue(ManagedObject object, String xml); -@Configuration -@Import({ - IsisModuleValAsciidocApplib.class, - AsciiDocPanelFactoriesWkt.Parented.class, - AsciiDocPanelFactoriesWkt.Standalone.class, -}) -public class IsisModuleValAsciidocUiWkt { } diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/schema/ixn/v2/InteractionDtoValueFacetUsingSemanticsProviderFactory.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/schema/ixn/v2/InteractionDtoValueFacetUsingSemanticsProviderFactory.java new file mode 100644 index 0000000..8113dc1 --- /dev/null +++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/schema/ixn/v2/InteractionDtoValueFacetUsingSemanticsProviderFactory.java @@ -0,0 +1,41 @@ +/* + * 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. + */ + +package org.apache.isis.core.metamodel.facets.schema.ixn.v2; + +import org.apache.isis.core.metamodel.facetapi.FacetHolder; +import org.apache.isis.core.metamodel.facets.object.value.vsp.ValueFacetUsingSemanticsProviderFactory; +import org.apache.isis.schema.ixn.v2.InteractionDto; + +import lombok.val; + +public class InteractionDtoValueFacetUsingSemanticsProviderFactory extends ValueFacetUsingSemanticsProviderFactory<InteractionDto> { + + @Override + public void process(final ProcessClassContext processClassContext) { + final Class<?> type = processClassContext.getCls(); + final FacetHolder holder = processClassContext.getFacetHolder(); + + if (!(InteractionDto.class.isAssignableFrom(type))) { + return; + } + val provider = new InteractionDtoValueSemanticsProvider(holder); + addFacets(provider); + } +} diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/schema/ixn/v2/InteractionDtoValueSemanticsProvider.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/schema/ixn/v2/InteractionDtoValueSemanticsProvider.java new file mode 100644 index 0000000..82c3839 --- /dev/null +++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/schema/ixn/v2/InteractionDtoValueSemanticsProvider.java @@ -0,0 +1,110 @@ +/* + * 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. + */ + +package org.apache.isis.core.metamodel.facets.schema.ixn.v2; + +import org.apache.isis.applib.adapters.EncoderDecoder; +import org.apache.isis.applib.adapters.Parser; +import org.apache.isis.applib.util.schema.InteractionDtoUtils; +import org.apache.isis.core.metamodel.facetapi.Facet; +import org.apache.isis.core.metamodel.facetapi.FacetHolder; +import org.apache.isis.core.metamodel.facets.object.value.vsp.ValueSemanticsProviderAndFacetAbstract; +import org.apache.isis.core.metamodel.facets.schema.ixn.InteractionDtoValueFacet; +import org.apache.isis.core.metamodel.spec.ManagedObject; +import org.apache.isis.schema.ixn.v2.InteractionDto; + +import lombok.val; + +public class InteractionDtoValueSemanticsProvider +extends ValueSemanticsProviderAndFacetAbstract<InteractionDto> +implements InteractionDtoValueFacet { + + private static final int TYPICAL_LENGTH = 0; + + private static Class<? extends Facet> type() { + return InteractionDtoValueFacet.class; + } + + private static final InteractionDto DEFAULT_VALUE = null; + + /** + * Required because implementation of {@link Parser} and + * {@link EncoderDecoder}. + */ + public InteractionDtoValueSemanticsProvider() { + this(null); + } + + public InteractionDtoValueSemanticsProvider(final FacetHolder holder) { + super(type(), holder, InteractionDto.class, TYPICAL_LENGTH, -1, Immutability.IMMUTABLE, EqualByContent.NOT_HONOURED, DEFAULT_VALUE); + } + + + @Override + protected InteractionDto doParse(final Object context, final String str) { + return doRestore(str); + } + + @Override + public String titleString(final Object object) { + if (object == null) return "[null]"; + final InteractionDto interactionDto = (InteractionDto) object; + return InteractionDtoUtils.toXml(interactionDto); + } + + @Override + public String titleStringWithMask(final Object value, final String usingMask) { + return titleString(value); + } + + + @Override + public String interactionDtoValue(final ManagedObject object) { + if (object == null) { + return ""; + } + val interactionDto = (InteractionDto) object.getPojo(); + return InteractionDtoUtils.toXml(interactionDto); + } + + @Override + public ManagedObject createValue(final ManagedObject object, final String xml) { + val interactionDto = InteractionDtoUtils.fromXml(xml); + return getObjectManager().adapt(interactionDto); + } + + + @Override + protected String doEncode(final Object object) { + val interactionDto = (InteractionDto) object; + return InteractionDtoUtils.toXml(interactionDto); + } + + @Override + protected InteractionDto doRestore(final String xml) { + return InteractionDtoUtils.fromXml(xml); + } + + + @Override + public String toString() { + return "InteractionDtoValueSemanticsProvider"; + } + +} diff --git a/valuetypes/asciidoc/ui/wicket/src/main/java/org/apache/isis/valuetypes/asciidoc/ui/wkt/IsisModuleValAsciidocUiWkt.java b/valuetypes/asciidoc/ui/wicket/src/main/java/org/apache/isis/valuetypes/asciidoc/ui/wkt/IsisModuleValAsciidocUiWkt.java index 0d09de0..3dea07c 100644 --- a/valuetypes/asciidoc/ui/wicket/src/main/java/org/apache/isis/valuetypes/asciidoc/ui/wkt/IsisModuleValAsciidocUiWkt.java +++ b/valuetypes/asciidoc/ui/wicket/src/main/java/org/apache/isis/valuetypes/asciidoc/ui/wkt/IsisModuleValAsciidocUiWkt.java @@ -23,12 +23,21 @@ import org.springframework.context.annotation.Import; import org.apache.isis.valuetypes.asciidoc.applib.IsisModuleValAsciidocApplib; import org.apache.isis.valuetypes.asciidoc.ui.wkt.components.AsciiDocPanelFactoriesWkt; +import org.apache.isis.valuetypes.asciidoc.ui.wkt.components.schema.chg.v2.ChangesDtoPanelFactoriesWkt; +import org.apache.isis.valuetypes.asciidoc.ui.wkt.components.schema.cmd.v2.CommandDtoPanelFactoriesWkt; +import org.apache.isis.valuetypes.asciidoc.ui.wkt.components.schema.ixn.v2.InteractionDtoPanelFactoriesWkt; @Configuration @Import({ IsisModuleValAsciidocApplib.class, AsciiDocPanelFactoriesWkt.Parented.class, AsciiDocPanelFactoriesWkt.Standalone.class, + InteractionDtoPanelFactoriesWkt.Parented.class, + InteractionDtoPanelFactoriesWkt.Standalone.class, + ChangesDtoPanelFactoriesWkt.Parented.class, + ChangesDtoPanelFactoriesWkt.Standalone.class, + CommandDtoPanelFactoriesWkt.Parented.class, + CommandDtoPanelFactoriesWkt.Standalone.class, }) public class IsisModuleValAsciidocUiWkt { } diff --git a/valuetypes/asciidoc/ui/wicket/src/main/java/org/apache/isis/valuetypes/asciidoc/ui/wkt/IsisModuleValAsciidocUiWkt.java b/valuetypes/asciidoc/ui/wicket/src/main/java/org/apache/isis/valuetypes/asciidoc/ui/wkt/components/AsciiDocForXmlComponentWkt.java similarity index 50% copy from valuetypes/asciidoc/ui/wicket/src/main/java/org/apache/isis/valuetypes/asciidoc/ui/wkt/IsisModuleValAsciidocUiWkt.java copy to valuetypes/asciidoc/ui/wicket/src/main/java/org/apache/isis/valuetypes/asciidoc/ui/wkt/components/AsciiDocForXmlComponentWkt.java index 0d09de0..1119309 100644 --- a/valuetypes/asciidoc/ui/wicket/src/main/java/org/apache/isis/valuetypes/asciidoc/ui/wkt/IsisModuleValAsciidocUiWkt.java +++ b/valuetypes/asciidoc/ui/wicket/src/main/java/org/apache/isis/valuetypes/asciidoc/ui/wkt/components/AsciiDocForXmlComponentWkt.java @@ -16,19 +16,33 @@ * specific language governing permissions and limitations * under the License. */ -package org.apache.isis.valuetypes.asciidoc.ui.wkt; +package org.apache.isis.valuetypes.asciidoc.ui.wkt.components; -import org.springframework.context.annotation.Configuration; -import org.springframework.context.annotation.Import; +import org.apache.wicket.model.IModel; -import org.apache.isis.valuetypes.asciidoc.applib.IsisModuleValAsciidocApplib; -import org.apache.isis.valuetypes.asciidoc.ui.wkt.components.AsciiDocPanelFactoriesWkt; +import org.apache.isis.applib.util.schema.CommandDtoUtils; +import org.apache.isis.schema.cmd.v2.CommandDto; +import org.apache.isis.valuetypes.asciidoc.applib.value.AsciiDoc; + +import lombok.val; + +public class AsciiDocForXmlComponentWkt extends AsciiDocComponentWkt { + + private static final long serialVersionUID = 1L; + + public AsciiDocForXmlComponentWkt(String id, IModel<?> model) { + super(id, model); + setEnabled(false); + } + + /** + * for convenience of subtypes. + * @param xml + * @return + */ + protected final String asHtml(String xml) { + val adoc = "[source,xml]\n----\n" + xml + "\n----"; + return AsciiDoc.valueOfAdoc(adoc).asHtml(); + } -@Configuration -@Import({ - IsisModuleValAsciidocApplib.class, - AsciiDocPanelFactoriesWkt.Parented.class, - AsciiDocPanelFactoriesWkt.Standalone.class, -}) -public class IsisModuleValAsciidocUiWkt { } diff --git a/valuetypes/asciidoc/ui/wicket/src/main/java/org/apache/isis/valuetypes/asciidoc/ui/wkt/components/AsciiDocPanelFactoriesWkt.java b/valuetypes/asciidoc/ui/wicket/src/main/java/org/apache/isis/valuetypes/asciidoc/ui/wkt/components/AsciiDocPanelFactoriesWkt.java index 1a58f4a..fae7df5 100644 --- a/valuetypes/asciidoc/ui/wicket/src/main/java/org/apache/isis/valuetypes/asciidoc/ui/wkt/components/AsciiDocPanelFactoriesWkt.java +++ b/valuetypes/asciidoc/ui/wicket/src/main/java/org/apache/isis/valuetypes/asciidoc/ui/wkt/components/AsciiDocPanelFactoriesWkt.java @@ -69,10 +69,7 @@ public class AsciiDocPanelFactoriesWkt { @Override protected MarkupComponentFactory getMarkupComponentFactory() { - return (id, model) -> { - val markupComponent = new AsciiDocComponentWkt(id, model); - return markupComponent; - }; + return AsciiDocComponentWkt::new; } } diff --git a/valuetypes/asciidoc/ui/wicket/src/main/java/org/apache/isis/valuetypes/asciidoc/ui/wkt/IsisModuleValAsciidocUiWkt.java b/valuetypes/asciidoc/ui/wicket/src/main/java/org/apache/isis/valuetypes/asciidoc/ui/wkt/components/schema/chg/v2/ChangesDtoComponentWkt.java similarity index 56% copy from valuetypes/asciidoc/ui/wicket/src/main/java/org/apache/isis/valuetypes/asciidoc/ui/wkt/IsisModuleValAsciidocUiWkt.java copy to valuetypes/asciidoc/ui/wicket/src/main/java/org/apache/isis/valuetypes/asciidoc/ui/wkt/components/schema/chg/v2/ChangesDtoComponentWkt.java index 0d09de0..02d2f46 100644 --- a/valuetypes/asciidoc/ui/wicket/src/main/java/org/apache/isis/valuetypes/asciidoc/ui/wkt/IsisModuleValAsciidocUiWkt.java +++ b/valuetypes/asciidoc/ui/wicket/src/main/java/org/apache/isis/valuetypes/asciidoc/ui/wkt/components/schema/chg/v2/ChangesDtoComponentWkt.java @@ -16,19 +16,28 @@ * specific language governing permissions and limitations * under the License. */ -package org.apache.isis.valuetypes.asciidoc.ui.wkt; +package org.apache.isis.valuetypes.asciidoc.ui.wkt.components.schema.chg.v2; -import org.springframework.context.annotation.Configuration; -import org.springframework.context.annotation.Import; +import org.apache.wicket.model.IModel; -import org.apache.isis.valuetypes.asciidoc.applib.IsisModuleValAsciidocApplib; -import org.apache.isis.valuetypes.asciidoc.ui.wkt.components.AsciiDocPanelFactoriesWkt; +import org.apache.isis.applib.util.schema.ChangesDtoUtils; +import org.apache.isis.schema.chg.v2.ChangesDto; +import org.apache.isis.valuetypes.asciidoc.ui.wkt.components.AsciiDocForXmlComponentWkt; + +public class ChangesDtoComponentWkt extends AsciiDocForXmlComponentWkt { + + private static final long serialVersionUID = 1L; + + public ChangesDtoComponentWkt(String id, IModel<?> model) { + super(id, model); + } + + @Override + protected String asHtml(Object value) { + if(value instanceof ChangesDto) { + return asHtml(ChangesDtoUtils.toXml((ChangesDto) value)); + } + return super.asHtml(value); + } -@Configuration -@Import({ - IsisModuleValAsciidocApplib.class, - AsciiDocPanelFactoriesWkt.Parented.class, - AsciiDocPanelFactoriesWkt.Standalone.class, -}) -public class IsisModuleValAsciidocUiWkt { } diff --git a/valuetypes/asciidoc/ui/wicket/src/main/java/org/apache/isis/valuetypes/asciidoc/ui/wkt/components/AsciiDocPanelFactoriesWkt.java b/valuetypes/asciidoc/ui/wicket/src/main/java/org/apache/isis/valuetypes/asciidoc/ui/wkt/components/schema/chg/v2/ChangesDtoPanelFactoriesWkt.java similarity index 65% copy from valuetypes/asciidoc/ui/wicket/src/main/java/org/apache/isis/valuetypes/asciidoc/ui/wkt/components/AsciiDocPanelFactoriesWkt.java copy to valuetypes/asciidoc/ui/wicket/src/main/java/org/apache/isis/valuetypes/asciidoc/ui/wkt/components/schema/chg/v2/ChangesDtoPanelFactoriesWkt.java index 1a58f4a..200f797 100644 --- a/valuetypes/asciidoc/ui/wicket/src/main/java/org/apache/isis/valuetypes/asciidoc/ui/wkt/components/AsciiDocPanelFactoriesWkt.java +++ b/valuetypes/asciidoc/ui/wicket/src/main/java/org/apache/isis/valuetypes/asciidoc/ui/wkt/components/schema/chg/v2/ChangesDtoPanelFactoriesWkt.java @@ -17,23 +17,15 @@ * under the License. */ -package org.apache.isis.valuetypes.asciidoc.ui.wkt.components; +package org.apache.isis.valuetypes.asciidoc.ui.wkt.components.schema.chg.v2; import org.springframework.stereotype.Component; -import org.apache.isis.valuetypes.asciidoc.applib.value.AsciiDoc; +import org.apache.isis.schema.chg.v2.ChangesDto; import org.apache.isis.viewer.wicket.ui.components.scalars.markup.MarkupComponentFactory; import org.apache.isis.viewer.wicket.ui.components.scalars.markup.MarkupPanelFactories; -import lombok.val; - -/** - * @implNote Almost a copy of {@code Parented} and {@code Standalone} in - * {@link MarkupPanelFactories}, but specific to - * the {@link AsciiDoc} value-type which requires client-side java-script to be - * executed to enable syntax highlighting - */ -public class AsciiDocPanelFactoriesWkt { +public class ChangesDtoPanelFactoriesWkt { // -- PARENTED @@ -42,19 +34,13 @@ public class AsciiDocPanelFactoriesWkt { private static final long serialVersionUID = 1L; public Parented() { - super(AsciiDoc.class); + super(ChangesDto.class); } @Override protected MarkupComponentFactory getMarkupComponentFactory() { - return (id, model) -> { - val markupComponent = new AsciiDocComponentWkt(id, model); - markupComponent.setEnabled(false); - return markupComponent; - }; - + return ChangesDtoComponentWkt::new; } - } // -- STANDALONE @@ -64,18 +50,13 @@ public class AsciiDocPanelFactoriesWkt { private static final long serialVersionUID = 1L; public Standalone() { - super(AsciiDoc.class); + super(ChangesDto.class); } @Override protected MarkupComponentFactory getMarkupComponentFactory() { - return (id, model) -> { - val markupComponent = new AsciiDocComponentWkt(id, model); - return markupComponent; - }; + return ChangesDtoComponentWkt::new; } - } - } diff --git a/valuetypes/asciidoc/ui/wicket/src/main/java/org/apache/isis/valuetypes/asciidoc/ui/wkt/IsisModuleValAsciidocUiWkt.java b/valuetypes/asciidoc/ui/wicket/src/main/java/org/apache/isis/valuetypes/asciidoc/ui/wkt/components/schema/cmd/v2/CommandDtoComponentWkt.java similarity index 56% copy from valuetypes/asciidoc/ui/wicket/src/main/java/org/apache/isis/valuetypes/asciidoc/ui/wkt/IsisModuleValAsciidocUiWkt.java copy to valuetypes/asciidoc/ui/wicket/src/main/java/org/apache/isis/valuetypes/asciidoc/ui/wkt/components/schema/cmd/v2/CommandDtoComponentWkt.java index 0d09de0..f8df038 100644 --- a/valuetypes/asciidoc/ui/wicket/src/main/java/org/apache/isis/valuetypes/asciidoc/ui/wkt/IsisModuleValAsciidocUiWkt.java +++ b/valuetypes/asciidoc/ui/wicket/src/main/java/org/apache/isis/valuetypes/asciidoc/ui/wkt/components/schema/cmd/v2/CommandDtoComponentWkt.java @@ -16,19 +16,28 @@ * specific language governing permissions and limitations * under the License. */ -package org.apache.isis.valuetypes.asciidoc.ui.wkt; +package org.apache.isis.valuetypes.asciidoc.ui.wkt.components.schema.cmd.v2; -import org.springframework.context.annotation.Configuration; -import org.springframework.context.annotation.Import; +import org.apache.wicket.model.IModel; -import org.apache.isis.valuetypes.asciidoc.applib.IsisModuleValAsciidocApplib; -import org.apache.isis.valuetypes.asciidoc.ui.wkt.components.AsciiDocPanelFactoriesWkt; +import org.apache.isis.applib.util.schema.CommandDtoUtils; +import org.apache.isis.schema.cmd.v2.CommandDto; +import org.apache.isis.valuetypes.asciidoc.ui.wkt.components.AsciiDocForXmlComponentWkt; + +public class CommandDtoComponentWkt extends AsciiDocForXmlComponentWkt { + + private static final long serialVersionUID = 1L; + + public CommandDtoComponentWkt(String id, IModel<?> model) { + super(id, model); + } + + @Override + protected String asHtml(Object value) { + if(value instanceof CommandDto) { + return asHtml(CommandDtoUtils.toXml((CommandDto) value)); + } + return super.asHtml(value); + } -@Configuration -@Import({ - IsisModuleValAsciidocApplib.class, - AsciiDocPanelFactoriesWkt.Parented.class, - AsciiDocPanelFactoriesWkt.Standalone.class, -}) -public class IsisModuleValAsciidocUiWkt { } diff --git a/valuetypes/asciidoc/ui/wicket/src/main/java/org/apache/isis/valuetypes/asciidoc/ui/wkt/components/AsciiDocPanelFactoriesWkt.java b/valuetypes/asciidoc/ui/wicket/src/main/java/org/apache/isis/valuetypes/asciidoc/ui/wkt/components/schema/cmd/v2/CommandDtoPanelFactoriesWkt.java similarity index 65% copy from valuetypes/asciidoc/ui/wicket/src/main/java/org/apache/isis/valuetypes/asciidoc/ui/wkt/components/AsciiDocPanelFactoriesWkt.java copy to valuetypes/asciidoc/ui/wicket/src/main/java/org/apache/isis/valuetypes/asciidoc/ui/wkt/components/schema/cmd/v2/CommandDtoPanelFactoriesWkt.java index 1a58f4a..946d492 100644 --- a/valuetypes/asciidoc/ui/wicket/src/main/java/org/apache/isis/valuetypes/asciidoc/ui/wkt/components/AsciiDocPanelFactoriesWkt.java +++ b/valuetypes/asciidoc/ui/wicket/src/main/java/org/apache/isis/valuetypes/asciidoc/ui/wkt/components/schema/cmd/v2/CommandDtoPanelFactoriesWkt.java @@ -17,23 +17,15 @@ * under the License. */ -package org.apache.isis.valuetypes.asciidoc.ui.wkt.components; +package org.apache.isis.valuetypes.asciidoc.ui.wkt.components.schema.cmd.v2; import org.springframework.stereotype.Component; -import org.apache.isis.valuetypes.asciidoc.applib.value.AsciiDoc; +import org.apache.isis.schema.cmd.v2.CommandDto; import org.apache.isis.viewer.wicket.ui.components.scalars.markup.MarkupComponentFactory; import org.apache.isis.viewer.wicket.ui.components.scalars.markup.MarkupPanelFactories; -import lombok.val; - -/** - * @implNote Almost a copy of {@code Parented} and {@code Standalone} in - * {@link MarkupPanelFactories}, but specific to - * the {@link AsciiDoc} value-type which requires client-side java-script to be - * executed to enable syntax highlighting - */ -public class AsciiDocPanelFactoriesWkt { +public class CommandDtoPanelFactoriesWkt { // -- PARENTED @@ -42,19 +34,13 @@ public class AsciiDocPanelFactoriesWkt { private static final long serialVersionUID = 1L; public Parented() { - super(AsciiDoc.class); + super(CommandDto.class); } @Override protected MarkupComponentFactory getMarkupComponentFactory() { - return (id, model) -> { - val markupComponent = new AsciiDocComponentWkt(id, model); - markupComponent.setEnabled(false); - return markupComponent; - }; - + return CommandDtoComponentWkt::new; } - } // -- STANDALONE @@ -64,18 +50,13 @@ public class AsciiDocPanelFactoriesWkt { private static final long serialVersionUID = 1L; public Standalone() { - super(AsciiDoc.class); + super(CommandDto.class); } @Override protected MarkupComponentFactory getMarkupComponentFactory() { - return (id, model) -> { - val markupComponent = new AsciiDocComponentWkt(id, model); - return markupComponent; - }; + return CommandDtoComponentWkt::new; } - } - } diff --git a/valuetypes/asciidoc/ui/wicket/src/main/java/org/apache/isis/valuetypes/asciidoc/ui/wkt/IsisModuleValAsciidocUiWkt.java b/valuetypes/asciidoc/ui/wicket/src/main/java/org/apache/isis/valuetypes/asciidoc/ui/wkt/components/schema/ixn/v2/InteractionDtoComponentWkt.java similarity index 55% copy from valuetypes/asciidoc/ui/wicket/src/main/java/org/apache/isis/valuetypes/asciidoc/ui/wkt/IsisModuleValAsciidocUiWkt.java copy to valuetypes/asciidoc/ui/wicket/src/main/java/org/apache/isis/valuetypes/asciidoc/ui/wkt/components/schema/ixn/v2/InteractionDtoComponentWkt.java index 0d09de0..d727b5e 100644 --- a/valuetypes/asciidoc/ui/wicket/src/main/java/org/apache/isis/valuetypes/asciidoc/ui/wkt/IsisModuleValAsciidocUiWkt.java +++ b/valuetypes/asciidoc/ui/wicket/src/main/java/org/apache/isis/valuetypes/asciidoc/ui/wkt/components/schema/ixn/v2/InteractionDtoComponentWkt.java @@ -16,19 +16,28 @@ * specific language governing permissions and limitations * under the License. */ -package org.apache.isis.valuetypes.asciidoc.ui.wkt; +package org.apache.isis.valuetypes.asciidoc.ui.wkt.components.schema.ixn.v2; -import org.springframework.context.annotation.Configuration; -import org.springframework.context.annotation.Import; +import org.apache.wicket.model.IModel; -import org.apache.isis.valuetypes.asciidoc.applib.IsisModuleValAsciidocApplib; -import org.apache.isis.valuetypes.asciidoc.ui.wkt.components.AsciiDocPanelFactoriesWkt; +import org.apache.isis.applib.util.schema.InteractionDtoUtils; +import org.apache.isis.schema.ixn.v2.InteractionDto; +import org.apache.isis.valuetypes.asciidoc.ui.wkt.components.AsciiDocForXmlComponentWkt; + +public class InteractionDtoComponentWkt extends AsciiDocForXmlComponentWkt { + + private static final long serialVersionUID = 1L; + + public InteractionDtoComponentWkt(String id, IModel<?> model) { + super(id, model); + } + + @Override + protected String asHtml(Object value) { + if(value instanceof InteractionDto) { + return asHtml(InteractionDtoUtils.toXml((InteractionDto) value)); + } + return super.asHtml(value); + } -@Configuration -@Import({ - IsisModuleValAsciidocApplib.class, - AsciiDocPanelFactoriesWkt.Parented.class, - AsciiDocPanelFactoriesWkt.Standalone.class, -}) -public class IsisModuleValAsciidocUiWkt { } diff --git a/valuetypes/asciidoc/ui/wicket/src/main/java/org/apache/isis/valuetypes/asciidoc/ui/wkt/components/AsciiDocPanelFactoriesWkt.java b/valuetypes/asciidoc/ui/wicket/src/main/java/org/apache/isis/valuetypes/asciidoc/ui/wkt/components/schema/ixn/v2/InteractionDtoPanelFactoriesWkt.java similarity index 65% copy from valuetypes/asciidoc/ui/wicket/src/main/java/org/apache/isis/valuetypes/asciidoc/ui/wkt/components/AsciiDocPanelFactoriesWkt.java copy to valuetypes/asciidoc/ui/wicket/src/main/java/org/apache/isis/valuetypes/asciidoc/ui/wkt/components/schema/ixn/v2/InteractionDtoPanelFactoriesWkt.java index 1a58f4a..9edcc4f 100644 --- a/valuetypes/asciidoc/ui/wicket/src/main/java/org/apache/isis/valuetypes/asciidoc/ui/wkt/components/AsciiDocPanelFactoriesWkt.java +++ b/valuetypes/asciidoc/ui/wicket/src/main/java/org/apache/isis/valuetypes/asciidoc/ui/wkt/components/schema/ixn/v2/InteractionDtoPanelFactoriesWkt.java @@ -17,23 +17,15 @@ * under the License. */ -package org.apache.isis.valuetypes.asciidoc.ui.wkt.components; +package org.apache.isis.valuetypes.asciidoc.ui.wkt.components.schema.ixn.v2; import org.springframework.stereotype.Component; -import org.apache.isis.valuetypes.asciidoc.applib.value.AsciiDoc; +import org.apache.isis.schema.ixn.v2.InteractionDto; import org.apache.isis.viewer.wicket.ui.components.scalars.markup.MarkupComponentFactory; import org.apache.isis.viewer.wicket.ui.components.scalars.markup.MarkupPanelFactories; -import lombok.val; - -/** - * @implNote Almost a copy of {@code Parented} and {@code Standalone} in - * {@link MarkupPanelFactories}, but specific to - * the {@link AsciiDoc} value-type which requires client-side java-script to be - * executed to enable syntax highlighting - */ -public class AsciiDocPanelFactoriesWkt { +public class InteractionDtoPanelFactoriesWkt { // -- PARENTED @@ -42,19 +34,13 @@ public class AsciiDocPanelFactoriesWkt { private static final long serialVersionUID = 1L; public Parented() { - super(AsciiDoc.class); + super(InteractionDto.class); } @Override protected MarkupComponentFactory getMarkupComponentFactory() { - return (id, model) -> { - val markupComponent = new AsciiDocComponentWkt(id, model); - markupComponent.setEnabled(false); - return markupComponent; - }; - + return InteractionDtoComponentWkt::new; } - } // -- STANDALONE @@ -64,18 +50,13 @@ public class AsciiDocPanelFactoriesWkt { private static final long serialVersionUID = 1L; public Standalone() { - super(AsciiDoc.class); + super(InteractionDto.class); } @Override protected MarkupComponentFactory getMarkupComponentFactory() { - return (id, model) -> { - val markupComponent = new AsciiDocComponentWkt(id, model); - return markupComponent; - }; + return InteractionDtoComponentWkt::new; } - } - } diff --git a/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/markup/MarkupComponent.java b/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/markup/MarkupComponent.java index 9d1b4d5..84c2d96 100644 --- a/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/markup/MarkupComponent.java +++ b/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/markup/MarkupComponent.java @@ -52,7 +52,7 @@ public class MarkupComponent extends WebComponent { // -- HELPER - protected static CharSequence extractHtmlOrElse(Object modelObject, final String fallback) { + protected CharSequence extractHtmlOrElse(Object modelObject, final String fallback) { if(modelObject==null) { return fallback; @@ -67,15 +67,23 @@ public class MarkupComponent extends WebComponent { final Object value = adapter.getPojo(); - if(!(value instanceof HasHtml)) - return fallback; + val asHtml = asHtml(value); + if(asHtml != null) { + return asHtml; + } - return ((HasHtml)value).asHtml(); + return fallback; } return modelObject.toString(); } + protected String asHtml(Object value) { + if (value instanceof HasHtml) { + return ((HasHtml)value).asHtml(); + } + return null; + } }
