You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@isis.apache.org by da...@apache.org on 2016/02/26 15:53:01 UTC

[1/6] isis git commit: ISIS-1312: fix up the generated common schema.

Repository: isis
Updated Branches:
  refs/heads/ISIS-993 23f923342 -> 62f69d173


ISIS-1312: fix up the generated common schema.


Project: http://git-wip-us.apache.org/repos/asf/isis/repo
Commit: http://git-wip-us.apache.org/repos/asf/isis/commit/7368588e
Tree: http://git-wip-us.apache.org/repos/asf/isis/tree/7368588e
Diff: http://git-wip-us.apache.org/repos/asf/isis/diff/7368588e

Branch: refs/heads/ISIS-993
Commit: 7368588ee9c420943d49b7fe408e5daa8adfbfca
Parents: f206da6
Author: Dan Haywood <da...@haywood-associates.co.uk>
Authored: Fri Feb 26 14:22:28 2016 +0000
Committer: Dan Haywood <da...@haywood-associates.co.uk>
Committed: Fri Feb 26 14:22:28 2016 +0000

----------------------------------------------------------------------
 .../jaxb/CatalogingSchemaOutputResolver.java    | 79 +++++++++++++++++++-
 1 file changed, 75 insertions(+), 4 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/isis/blob/7368588e/core/schema/src/main/java/org/apache/isis/schema/services/jaxb/CatalogingSchemaOutputResolver.java
----------------------------------------------------------------------
diff --git a/core/schema/src/main/java/org/apache/isis/schema/services/jaxb/CatalogingSchemaOutputResolver.java b/core/schema/src/main/java/org/apache/isis/schema/services/jaxb/CatalogingSchemaOutputResolver.java
index aac43d7..b9d7c70 100644
--- a/core/schema/src/main/java/org/apache/isis/schema/services/jaxb/CatalogingSchemaOutputResolver.java
+++ b/core/schema/src/main/java/org/apache/isis/schema/services/jaxb/CatalogingSchemaOutputResolver.java
@@ -17,27 +17,44 @@
 package org.apache.isis.schema.services.jaxb;
 
 import java.io.IOException;
+import java.io.StringReader;
+import java.io.StringWriter;
 import java.util.Collections;
 import java.util.List;
 import java.util.Map;
 
 import javax.xml.bind.SchemaOutputResolver;
+import javax.xml.parsers.DocumentBuilder;
+import javax.xml.parsers.DocumentBuilderFactory;
 import javax.xml.transform.Result;
+import javax.xml.transform.Transformer;
+import javax.xml.transform.TransformerFactory;
+import javax.xml.transform.dom.DOMSource;
 import javax.xml.transform.stream.StreamResult;
 
 import com.google.common.collect.Lists;
 import com.google.common.collect.Maps;
 
+import org.w3c.dom.Attr;
+import org.w3c.dom.Document;
+import org.w3c.dom.Element;
+import org.w3c.dom.Node;
+import org.w3c.dom.NodeList;
+import org.xml.sax.InputSource;
+
 import org.apache.isis.applib.services.jaxb.JaxbService;
 
 /**
  * An implementation of {@link SchemaOutputResolver} that keeps track of all the schemas for which it has
  * {@link #createOutput(String, String) created} an output {@link StreamResult} containing the content of the schema.
  */
-class CatalogingSchemaOutputResolver extends SchemaOutputResolver
-{
+class CatalogingSchemaOutputResolver extends SchemaOutputResolver {
+
+    private static final String SCHEMA_LOCATION_INCORRECT = "http://isis.apache.org/schema/common";
+    private static final String SCHEMA_LOCATION_CORRECT = "http://isis.apache.org/schema/common/common.xsd";
+
     private final JaxbService.IsisSchemas isisSchemas;
-    private List<String> namespaceUris = Lists.newArrayList();
+    private final List<String> namespaceUris = Lists.newArrayList();
 
     public CatalogingSchemaOutputResolver(final JaxbService.IsisSchemas isisSchemas) {
         this.isisSchemas = isisSchemas;
@@ -51,7 +68,61 @@ class CatalogingSchemaOutputResolver extends SchemaOutputResolver
 
     public String getSchemaTextFor(final String namespaceUri) {
         final StreamResultWithWriter streamResult = schemaResultByNamespaceUri.get(namespaceUri);
-        return streamResult != null? streamResult.asString(): null;
+        if (streamResult == null) {
+            return null;
+        }
+        String xsd = streamResult.asString();
+
+        // HACK if it appears,
+        // replace <xs:import namespace="http://isis.apache.org/schema/common" schemaLocation="http://isis.apache.org/schema/common"/>
+        // with    <xs:import namespace="http://isis.apache.org/schema/common" schemaLocation="http://isis.apache.org/schema/common/common.xsd"/>
+
+        try {
+            final DocumentBuilderFactory docBuildFactory = DocumentBuilderFactory.newInstance();
+            final DocumentBuilder parser = docBuildFactory.newDocumentBuilder();
+            final Document document = parser.parse(new InputSource(new StringReader(xsd)));
+
+            final Element el = document.getDocumentElement();
+            replaceCommonSchemaLocationIfAny(el);
+
+            final Transformer transformer = TransformerFactory.newInstance().newTransformer();
+            final StringWriter writer = new StringWriter();
+            transformer.transform(new DOMSource(document), new StreamResult(writer));
+            xsd = writer.toString();
+
+        } catch(Exception ex) {
+            // ignore
+        }
+
+        return xsd;
+    }
+
+    private static void replaceCommonSchemaLocationIfAny(final Node node) {
+        if(schemaLocationReplacedIn(node)) {
+            return;
+        }
+        final NodeList nodeList = node.getChildNodes();
+        for (int i = 0; i < nodeList.getLength(); i++) {
+            final Node currentNode = nodeList.item(i);
+            if (currentNode.getNodeType() == Node.ELEMENT_NODE) {
+                replaceCommonSchemaLocationIfAny(currentNode);
+            }
+        }
+    }
+
+    private static boolean schemaLocationReplacedIn(final Node node) {
+        if(node instanceof Element) {
+            final Element importEl = (Element) node;
+            final Attr schemaLocationAttr = importEl.getAttributeNode("schemaLocation");
+            if(schemaLocationAttr != null) {
+                final String value = schemaLocationAttr.getValue();
+                if(SCHEMA_LOCATION_INCORRECT.endsWith(value)) {
+                    schemaLocationAttr.setValue(SCHEMA_LOCATION_CORRECT);
+                    return true;
+                }
+            }
+        }
+        return false;
     }
 
     @Override


[6/6] isis git commit: Merge branch 'master' into ISIS-993

Posted by da...@apache.org.
Merge branch 'master' into ISIS-993

# Conflicts:
#	core/applib/src/main/java/org/apache/isis/applib/services/dto/Dto_downloadXml.java
#	core/applib/src/main/java/org/apache/isis/applib/services/jaxb/CatalogingSchemaOutputResolver.java


Project: http://git-wip-us.apache.org/repos/asf/isis/repo
Commit: http://git-wip-us.apache.org/repos/asf/isis/commit/62f69d17
Tree: http://git-wip-us.apache.org/repos/asf/isis/tree/62f69d17
Diff: http://git-wip-us.apache.org/repos/asf/isis/diff/62f69d17

Branch: refs/heads/ISIS-993
Commit: 62f69d173430efa00c0f06df84ba33aac1c188c1
Parents: df32988 25f5899
Author: Dan Haywood <da...@haywood-associates.co.uk>
Authored: Fri Feb 26 14:52:28 2016 +0000
Committer: Dan Haywood <da...@haywood-associates.co.uk>
Committed: Fri Feb 26 14:52:28 2016 +0000

----------------------------------------------------------------------
 .../applib/services/dto/Dto_downloadXml.java    |  1 +
 .../jaxb/CatalogingSchemaOutputResolver.java    | 77 +++++++++++++++++++-
 .../isis/tool/mavenplugin/IsisMojoXsd.java      | 10 ++-
 3 files changed, 83 insertions(+), 5 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/isis/blob/62f69d17/core/applib/src/main/java/org/apache/isis/applib/services/dto/Dto_downloadXml.java
----------------------------------------------------------------------
diff --cc core/applib/src/main/java/org/apache/isis/applib/services/dto/Dto_downloadXml.java
index 34b1072,dc972f1..7fec121
--- a/core/applib/src/main/java/org/apache/isis/applib/services/dto/Dto_downloadXml.java
+++ b/core/applib/src/main/java/org/apache/isis/applib/services/dto/Dto_downloadXml.java
@@@ -50,7 -53,8 +50,8 @@@ public class Dto_downloadXml 
      @MemberOrder(sequence = "500.1")
      public Object $$(
              @ParameterLayout(named = "File name")
 -            final String fileName) throws JAXBException, IOException {
 +            final String fileName) {
+ 
          final String xml = jaxbService.toXml(dto);
          return new Clob(Util.withSuffix(fileName, "xml"), "text/xml", xml);
      }

http://git-wip-us.apache.org/repos/asf/isis/blob/62f69d17/core/applib/src/main/java/org/apache/isis/applib/services/jaxb/CatalogingSchemaOutputResolver.java
----------------------------------------------------------------------
diff --cc core/applib/src/main/java/org/apache/isis/applib/services/jaxb/CatalogingSchemaOutputResolver.java
index 5d16c95,0000000..0408bab
mode 100644,000000..100644
--- a/core/applib/src/main/java/org/apache/isis/applib/services/jaxb/CatalogingSchemaOutputResolver.java
+++ b/core/applib/src/main/java/org/apache/isis/applib/services/jaxb/CatalogingSchemaOutputResolver.java
@@@ -1,83 -1,0 +1,152 @@@
 +/**
 + *  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.applib.services.jaxb;
 +
 +import java.io.IOException;
++import java.io.StringReader;
++import java.io.StringWriter;
 +import java.util.Collections;
 +import java.util.List;
 +import java.util.Map;
 +
 +import javax.xml.bind.SchemaOutputResolver;
++import javax.xml.parsers.DocumentBuilder;
++import javax.xml.parsers.DocumentBuilderFactory;
 +import javax.xml.transform.Result;
++import javax.xml.transform.Transformer;
++import javax.xml.transform.TransformerFactory;
++import javax.xml.transform.dom.DOMSource;
 +import javax.xml.transform.stream.StreamResult;
 +
 +import com.google.common.collect.Lists;
 +import com.google.common.collect.Maps;
 +
++import org.w3c.dom.Attr;
++import org.w3c.dom.Document;
++import org.w3c.dom.Element;
++import org.w3c.dom.Node;
++import org.w3c.dom.NodeList;
++import org.xml.sax.InputSource;
++
 +/**
 + * An implementation of {@link SchemaOutputResolver} that keeps track of all the schemas for which it has
 + * {@link #createOutput(String, String) created} an output {@link StreamResult} containing the content of the schema.
 + */
- class CatalogingSchemaOutputResolver extends SchemaOutputResolver
- {
++class CatalogingSchemaOutputResolver extends SchemaOutputResolver {
++
++    private static final String SCHEMA_LOCATION_INCORRECT = "http://isis.apache.org/schema/common";
++    private static final String SCHEMA_LOCATION_CORRECT = "http://isis.apache.org/schema/common/common.xsd";
++
 +    private final JaxbService.IsisSchemas isisSchemas;
-     private List<String> namespaceUris = Lists.newArrayList();
++    private final List<String> namespaceUris = Lists.newArrayList();
 +
 +    public CatalogingSchemaOutputResolver(final JaxbService.IsisSchemas isisSchemas) {
 +        this.isisSchemas = isisSchemas;
 +    }
 +
 +    public List<String> getNamespaceUris() {
 +        return namespaceUris;
 +    }
 +
 +    private Map<String, StreamResultWithWriter> schemaResultByNamespaceUri = Maps.newLinkedHashMap();
 +
 +    public String getSchemaTextFor(final String namespaceUri) {
 +        final StreamResultWithWriter streamResult = schemaResultByNamespaceUri.get(namespaceUri);
-         return streamResult != null? streamResult.asString(): null;
++        if (streamResult == null) {
++            return null;
++        }
++        String xsd = streamResult.asString();
++
++        try {
++            final DocumentBuilderFactory docBuildFactory = DocumentBuilderFactory.newInstance();
++            final DocumentBuilder parser = docBuildFactory.newDocumentBuilder();
++            final Document document = parser.parse(new InputSource(new StringReader(xsd)));
++
++            final Element el = document.getDocumentElement();
++            replaceCommonSchemaLocationIfAny(el);
++
++            final Transformer transformer = TransformerFactory.newInstance().newTransformer();
++            final StringWriter writer = new StringWriter();
++            transformer.transform(new DOMSource(document), new StreamResult(writer));
++            xsd = writer.toString();
++
++        } catch(Exception ex) {
++            // ignore
++        }
++
++        return xsd;
++    }
++
++    // replace <xs:import namespace="..." schemaLocation="http://isis.apache.org/schema/common"/>
++    // with    <xs:import namespace="..." schemaLocation="http://isis.apache.org/schema/common/common.xsd"/>
++    private static void replaceCommonSchemaLocationIfAny(final Node node) {
++        if(schemaLocationReplacedIn(node)) {
++            return;
++        }
++        final NodeList nodeList = node.getChildNodes();
++        for (int i = 0; i < nodeList.getLength(); i++) {
++            final Node currentNode = nodeList.item(i);
++            if (currentNode.getNodeType() == Node.ELEMENT_NODE) {
++                replaceCommonSchemaLocationIfAny(currentNode);
++            }
++        }
++    }
++
++    private static boolean schemaLocationReplacedIn(final Node node) {
++        if(node instanceof Element) {
++            final Element importEl = (Element) node;
++            final Attr schemaLocationAttr = importEl.getAttributeNode("schemaLocation");
++            if(schemaLocationAttr != null) {
++                final String value = schemaLocationAttr.getValue();
++                if(SCHEMA_LOCATION_INCORRECT.endsWith(value)) {
++                    schemaLocationAttr.setValue(SCHEMA_LOCATION_CORRECT);
++                    return true;
++                }
++            }
++        }
++        return false;
 +    }
 +
 +    @Override
 +    public Result createOutput(
 +            final String namespaceUri, final String suggestedFileName) throws IOException {
 +
 +        final StreamResultWithWriter result = new StreamResultWithWriter();
 +
 +        result.setSystemId(namespaceUri);
 +
 +        if (isisSchemas.shouldIgnore(namespaceUri)) {
 +            // skip
 +        } else {
 +            namespaceUris.add(namespaceUri);
 +            schemaResultByNamespaceUri.put(namespaceUri, result);
 +        }
 +
 +        return result;
 +    }
 +
 +    public Map<String, String> asMap() {
 +        final Map<String,String> map = Maps.newLinkedHashMap();
 +        final List<String> namespaceUris = getNamespaceUris();
 +
 +        for (String namespaceUri : namespaceUris) {
 +            map.put(namespaceUri, getSchemaTextFor(namespaceUri));
 +        }
 +
 +        return Collections.unmodifiableMap(map);
 +    }
 +}


[2/6] isis git commit: ISIS-1313: new 'commonSchemas' configuration parameter.

Posted by da...@apache.org.
ISIS-1313: new 'commonSchemas' configuration parameter.


Project: http://git-wip-us.apache.org/repos/asf/isis/repo
Commit: http://git-wip-us.apache.org/repos/asf/isis/commit/e7f7c8ae
Tree: http://git-wip-us.apache.org/repos/asf/isis/tree/e7f7c8ae
Diff: http://git-wip-us.apache.org/repos/asf/isis/diff/e7f7c8ae

Branch: refs/heads/ISIS-993
Commit: e7f7c8aea24e53c878a8bea8cdfd516b70b70843
Parents: 7368588
Author: Dan Haywood <da...@haywood-associates.co.uk>
Authored: Fri Feb 26 14:24:54 2016 +0000
Committer: Dan Haywood <da...@haywood-associates.co.uk>
Committed: Fri Feb 26 14:24:54 2016 +0000

----------------------------------------------------------------------
 .../org/apache/isis/tool/mavenplugin/IsisMojoXsd.java     | 10 +++++++++-
 1 file changed, 9 insertions(+), 1 deletion(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/isis/blob/e7f7c8ae/core/maven-plugin/src/main/java/org/apache/isis/tool/mavenplugin/IsisMojoXsd.java
----------------------------------------------------------------------
diff --git a/core/maven-plugin/src/main/java/org/apache/isis/tool/mavenplugin/IsisMojoXsd.java b/core/maven-plugin/src/main/java/org/apache/isis/tool/mavenplugin/IsisMojoXsd.java
index d1fd165..67e3279 100644
--- a/core/maven-plugin/src/main/java/org/apache/isis/tool/mavenplugin/IsisMojoXsd.java
+++ b/core/maven-plugin/src/main/java/org/apache/isis/tool/mavenplugin/IsisMojoXsd.java
@@ -70,6 +70,12 @@ public class IsisMojoXsd extends IsisMojoAbstract {
     @Parameter(required = false, readonly = false, property = "separate", defaultValue = "false")
     private boolean separate;
 
+    /**
+     * Whether to also generate the isis common schema(s).
+     */
+    @Parameter(required = false, readonly = false, property = "commonSchemas", defaultValue = "false")
+    private boolean commonSchemas;
+
     @Override
     protected void doExecute(
             final ContextForMojo context, final IsisSystem system)
@@ -102,7 +108,9 @@ public class IsisMojoXsd extends IsisMojoAbstract {
 
         final Object instance = InstanceUtil.createInstance(dtoClassName);
         final Map<String, String> schemaByNamespace =
-                jaxbService.toXsd(instance, JaxbService.IsisSchemas.INCLUDE);
+                jaxbService.toXsd(
+                        instance,
+                        commonSchemas ? JaxbService.IsisSchemas.INCLUDE: JaxbService.IsisSchemas.IGNORE);
 
         final File schemaDir = separate? new File(outputDir, dtoClassName): outputDir;
 


[4/6] isis git commit: ISIS-993: fixes to prevent SpecificationCacheDefault from getting out-of-whack (by mapping ObjectSpecId to className, rather than spec; can then use the className to look up the spec in turn).

Posted by da...@apache.org.
ISIS-993: fixes to prevent SpecificationCacheDefault from getting out-of-whack (by mapping ObjectSpecId to className, rather than spec; can then use the className to look up the spec in turn).

This stuff came about because reloading of grid after change was only working if invalidated the class spec (= refresh twice).


Project: http://git-wip-us.apache.org/repos/asf/isis/repo
Commit: http://git-wip-us.apache.org/repos/asf/isis/commit/48fe231b
Tree: http://git-wip-us.apache.org/repos/asf/isis/tree/48fe231b
Diff: http://git-wip-us.apache.org/repos/asf/isis/diff/48fe231b

Branch: refs/heads/ISIS-993
Commit: 48fe231be5f2946d81eb2192ebfbdd958bbe21a6
Parents: 23f9233
Author: Dan Haywood <da...@haywood-associates.co.uk>
Authored: Fri Feb 26 14:38:55 2016 +0000
Committer: Dan Haywood <da...@haywood-associates.co.uk>
Committed: Fri Feb 26 14:39:37 2016 +0000

----------------------------------------------------------------------
 .../specloader/ObjectReflectorDefault.java      |  2 +-
 .../specloader/SpecificationCacheDefault.java   | 23 +++++++++++++-------
 2 files changed, 16 insertions(+), 9 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/isis/blob/48fe231b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/ObjectReflectorDefault.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/ObjectReflectorDefault.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/ObjectReflectorDefault.java
index a48fab0..2957dd7 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/ObjectReflectorDefault.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/ObjectReflectorDefault.java
@@ -385,7 +385,7 @@ public final class ObjectReflectorDefault
             // don't have an ObjectSpecId; hence the guard.
             if(spec.containsDoOpFacet(ObjectSpecIdFacet.class)) {
                 ObjectSpecId specId = spec.getSpecId();
-                if (getCache().getByObjectType(specId) != spec) {
+                if (getCache().getByObjectType(specId) == null) {
                     getCache().recache(spec);
                 }
             }

http://git-wip-us.apache.org/repos/asf/isis/blob/48fe231b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/SpecificationCacheDefault.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/SpecificationCacheDefault.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/SpecificationCacheDefault.java
index 1e4df63..4d2b476 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/SpecificationCacheDefault.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/SpecificationCacheDefault.java
@@ -34,7 +34,7 @@ import org.apache.isis.core.metamodel.specloader.validator.ValidationFailures;
 class SpecificationCacheDefault {
     
     private final Map<String, ObjectSpecification> specByClassName = Maps.newHashMap();
-    private Map<ObjectSpecId, ObjectSpecification> specById;
+    private Map<ObjectSpecId, String> classNameBySpecId;
 
     public ObjectSpecification get(final String className) {
         return specByClassName.get(className);
@@ -58,16 +58,20 @@ class SpecificationCacheDefault {
         if (!isInitialized()) {
             throw new IllegalStateException("SpecificationCache by object type has not yet been initialized");
         }
-        return specById.get(objectSpecID);
+        final String className = classNameBySpecId.get(objectSpecID);
+        return className != null ? specByClassName.get(className) : null;
     }
 
     /**
      * Populated as a result of running {@link MetaModelValidator#validate(ValidationFailures)} validation} after
      * xxxallxxx most specs have been loaded.
      */
-    void setCacheBySpecId(Map<ObjectSpecId, ObjectSpecification> specById) {
-        this.specById = Maps.newHashMap();
-        this.specById.putAll(specById);
+    void setCacheBySpecId(final Map<ObjectSpecId, ObjectSpecification> specById) {
+        this.classNameBySpecId = Maps.newHashMap();
+        for (ObjectSpecId objectSpecId : specById.keySet()) {
+            final ObjectSpecification objectSpec = specById.get(objectSpecId);
+            this.classNameBySpecId.put(objectSpecId, objectSpec.getCorrespondingClass().getName());
+        }
     }
 
     public ObjectSpecification remove(String typeName) {
@@ -77,7 +81,7 @@ class SpecificationCacheDefault {
                 // umm.  It turns out that anonymous inner classes (eg org.estatio.dom.WithTitleGetter$ToString$1)
                 // don't have an ObjectSpecId; hence the guard.
                 ObjectSpecId specId = removed.getSpecId();
-                specById.remove(specId);
+                classNameBySpecId.remove(specId);
             }
         }
         return removed;
@@ -92,11 +96,14 @@ class SpecificationCacheDefault {
             // just ignore.
             return;
         }
-        specById.put(spec.getSpecId(), spec);
+        if(!spec.containsDoOpFacet(ObjectSpecIdFacet.class)) {
+            return;
+        }
+        classNameBySpecId.put(spec.getSpecId(), spec.getCorrespondingClass().getName());
     }
     
     boolean isInitialized() {
-        return specById != null;
+        return classNameBySpecId != null;
     }
 
 }


[5/6] isis git commit: ISIS-993: minor changes, working towards being able to generate .layout.xml for complete vs normalized vs minimal (no longer NPEs for complete etc), however...

Posted by da...@apache.org.
ISIS-993: minor changes, working towards being able to generate .layout.xml for complete vs normalized vs minimal (no longer NPEs for complete etc), however...

... not yet correctly roundtripping for anything other than the complete .layout.xml.


Project: http://git-wip-us.apache.org/repos/asf/isis/repo
Commit: http://git-wip-us.apache.org/repos/asf/isis/commit/df329882
Tree: http://git-wip-us.apache.org/repos/asf/isis/tree/df329882
Diff: http://git-wip-us.apache.org/repos/asf/isis/diff/df329882

Branch: refs/heads/ISIS-993
Commit: df329882299524e194a7e9d0e86f497421eaa110
Parents: 48fe231
Author: Dan Haywood <da...@haywood-associates.co.uk>
Authored: Fri Feb 26 14:43:29 2016 +0000
Committer: Dan Haywood <da...@haywood-associates.co.uk>
Committed: Fri Feb 26 14:43:29 2016 +0000

----------------------------------------------------------------------
 .../metamodel/facets/object/grid/GridFacet.java    | 10 +++++++++-
 .../services/grid/GridServiceDefault.java          | 17 +++++++++--------
 2 files changed, 18 insertions(+), 9 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/isis/blob/df329882/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/grid/GridFacet.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/grid/GridFacet.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/grid/GridFacet.java
index 75dbda9..4b09be1 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/grid/GridFacet.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/grid/GridFacet.java
@@ -20,10 +20,18 @@ package org.apache.isis.core.metamodel.facets.object.grid;
 
 
 import org.apache.isis.applib.layout.component.Grid;
+import org.apache.isis.applib.services.layout.GridNormalizerService;
+import org.apache.isis.applib.services.layout.GridService;
 import org.apache.isis.core.metamodel.facetapi.Facet;
 
 /**
- * Corresponds to providing a <code>.layout.xml</code> file for the domain object's class.
+ * Obtain the current grid, derived either from a <code>.layout.xml</code> file, and normalized, or synthesized from
+ * existing layout metadata (annotations or <code>layout.json</code>).
+ *
+ * <p>
+ *     Most of the heavy lifting is done by delegating to the {@link GridService} and {@link GridNormalizerService}
+ *     services.
+ * </p>
  */
 public interface GridFacet extends Facet {
 

http://git-wip-us.apache.org/repos/asf/isis/blob/df329882/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/grid/GridServiceDefault.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/grid/GridServiceDefault.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/grid/GridServiceDefault.java
index 4ce3f02..7a774d3 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/grid/GridServiceDefault.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/grid/GridServiceDefault.java
@@ -229,21 +229,22 @@ public class GridServiceDefault
     public Grid toGrid(final Class<?> domainClass, final Style style) {
         switch (style) {
         case NORMALIZED:
-            // obtain the already normalized grid, if available.
-            // (if there is none, then the facet will delegate back to this service to do the normalization,
-            // but then will cache it for any subsequent requests).
-            final ObjectSpecification objectSpec = specificationLookup.loadSpecification(domainClass);
-            final GridFacet facet = objectSpec.getFacet(GridFacet.class);
-            return facet != null? facet.getGrid(): null;
+            return normalizedGrid(domainClass);
         case COMPLETE:
-            return complete(fromXml(domainClass));
+            return complete(normalizedGrid(domainClass));
         case MINIMAL:
-            return minimal(fromXml(domainClass));
+            return minimal(normalizedGrid(domainClass));
         default:
             throw new IllegalArgumentException("unsupported style");
         }
     }
 
+    protected Grid normalizedGrid(final Class<?> domainClass) {
+        final ObjectSpecification objectSpec = specificationLookup.loadSpecification(domainClass);
+        final GridFacet facet = objectSpec.getFacet(GridFacet.class);
+        return facet != null? facet.getGrid(): null;
+    }
+
     @Override
     public String tnsAndSchemaLocation(final Grid grid) {
         final List<String> parts = Lists.newArrayList();


[3/6] isis git commit: ISIS-1314: adding @ParameterLayout to the DTO mixin (download) actions.

Posted by da...@apache.org.
ISIS-1314: adding @ParameterLayout to the DTO mixin (download) actions.


Project: http://git-wip-us.apache.org/repos/asf/isis/repo
Commit: http://git-wip-us.apache.org/repos/asf/isis/commit/25f5899d
Tree: http://git-wip-us.apache.org/repos/asf/isis/tree/25f5899d
Diff: http://git-wip-us.apache.org/repos/asf/isis/diff/25f5899d

Branch: refs/heads/ISIS-993
Commit: 25f5899d68ad779ea3b22f1708880e61097256e0
Parents: e7f7c8a
Author: Dan Haywood <da...@haywood-associates.co.uk>
Authored: Fri Feb 26 14:27:32 2016 +0000
Committer: Dan Haywood <da...@haywood-associates.co.uk>
Committed: Fri Feb 26 14:27:32 2016 +0000

----------------------------------------------------------------------
 .../org/apache/isis/applib/services/dto/Dto_downloadXml.java    | 5 ++++-
 .../org/apache/isis/applib/services/dto/Dto_downloadXsd.java    | 2 ++
 2 files changed, 6 insertions(+), 1 deletion(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/isis/blob/25f5899d/core/applib/src/main/java/org/apache/isis/applib/services/dto/Dto_downloadXml.java
----------------------------------------------------------------------
diff --git a/core/applib/src/main/java/org/apache/isis/applib/services/dto/Dto_downloadXml.java b/core/applib/src/main/java/org/apache/isis/applib/services/dto/Dto_downloadXml.java
index 3cd9ad4..dc972f1 100644
--- a/core/applib/src/main/java/org/apache/isis/applib/services/dto/Dto_downloadXml.java
+++ b/core/applib/src/main/java/org/apache/isis/applib/services/dto/Dto_downloadXml.java
@@ -25,6 +25,7 @@ import org.apache.isis.applib.annotation.Action;
 import org.apache.isis.applib.annotation.ActionLayout;
 import org.apache.isis.applib.annotation.MemberOrder;
 import org.apache.isis.applib.annotation.Mixin;
+import org.apache.isis.applib.annotation.ParameterLayout;
 import org.apache.isis.applib.annotation.RestrictTo;
 import org.apache.isis.applib.annotation.SemanticsOf;
 import org.apache.isis.applib.services.jaxb.JaxbService;
@@ -50,7 +51,9 @@ public class Dto_downloadXml {
             cssClassFa = "fa-download"
     )
     @MemberOrder(sequence = "500.1")
-    public Object $$(final String fileName) throws JAXBException, IOException {
+    public Object $$(
+            @ParameterLayout(named = "File name")
+            final String fileName) throws JAXBException, IOException {
 
         final String xml = jaxbService.toXml(dto);
         return new Clob(Util.withSuffix(fileName, "xml"), "text/xml", xml);

http://git-wip-us.apache.org/repos/asf/isis/blob/25f5899d/core/applib/src/main/java/org/apache/isis/applib/services/dto/Dto_downloadXsd.java
----------------------------------------------------------------------
diff --git a/core/applib/src/main/java/org/apache/isis/applib/services/dto/Dto_downloadXsd.java b/core/applib/src/main/java/org/apache/isis/applib/services/dto/Dto_downloadXsd.java
index 9366ec4..a139f15 100644
--- a/core/applib/src/main/java/org/apache/isis/applib/services/dto/Dto_downloadXsd.java
+++ b/core/applib/src/main/java/org/apache/isis/applib/services/dto/Dto_downloadXsd.java
@@ -33,6 +33,7 @@ import org.apache.isis.applib.annotation.Action;
 import org.apache.isis.applib.annotation.ActionLayout;
 import org.apache.isis.applib.annotation.MemberOrder;
 import org.apache.isis.applib.annotation.Mixin;
+import org.apache.isis.applib.annotation.ParameterLayout;
 import org.apache.isis.applib.annotation.RestrictTo;
 import org.apache.isis.applib.annotation.SemanticsOf;
 import org.apache.isis.applib.services.jaxb.JaxbService;
@@ -67,6 +68,7 @@ public class Dto_downloadXsd {
     )
     @MemberOrder(sequence = "500.2")
     public Object $$(
+            @ParameterLayout(named = "File name")
             final String fileName,
             final JaxbService.IsisSchemas isisSchemas) {