You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@sling.apache.org by ro...@apache.org on 2017/11/07 09:57:11 UTC

[sling-org-apache-sling-provisioning-model] 15/34: Remove support for xml

This is an automated email from the ASF dual-hosted git repository.

rombert pushed a commit to annotated tag org.apache.sling.provisioning.model-1.0.0
in repository https://gitbox.apache.org/repos/asf/sling-org-apache-sling-provisioning-model.git

commit 252bf2d4c21800342af397f7df75d42472843809
Author: Carsten Ziegeler <cz...@apache.org>
AuthorDate: Tue Sep 30 08:13:47 2014 +0000

    Remove support for xml
    
    git-svn-id: https://svn.apache.org/repos/asf/sling/trunk/tooling/support/slingstart-model@1628370 13f79535-47bb-0310-9956-ffa450edef68
---
 .../slingstart/model/xml/XMLSSMModelReader.java    | 356 ---------------------
 .../slingstart/model/xml/XMLSSMModelWriter.java    | 215 -------------
 .../sling/slingstart/model/xml/package-info.java   |  24 --
 3 files changed, 595 deletions(-)

diff --git a/src/main/java/org/apache/sling/slingstart/model/xml/XMLSSMModelReader.java b/src/main/java/org/apache/sling/slingstart/model/xml/XMLSSMModelReader.java
deleted file mode 100644
index a95665a..0000000
--- a/src/main/java/org/apache/sling/slingstart/model/xml/XMLSSMModelReader.java
+++ /dev/null
@@ -1,356 +0,0 @@
-/*
- * 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.sling.slingstart.model.xml;
-
-import java.io.ByteArrayInputStream;
-import java.io.IOException;
-import java.io.LineNumberReader;
-import java.io.Reader;
-import java.io.StringReader;
-import java.util.Dictionary;
-import java.util.Enumeration;
-import java.util.Map;
-import java.util.Properties;
-import java.util.Stack;
-
-import javax.xml.parsers.ParserConfigurationException;
-import javax.xml.parsers.SAXParser;
-import javax.xml.parsers.SAXParserFactory;
-
-import org.apache.felix.cm.file.ConfigurationHandler;
-import org.apache.sling.slingstart.model.SSMArtifact;
-import org.apache.sling.slingstart.model.SSMConfiguration;
-import org.apache.sling.slingstart.model.SSMDeliverable;
-import org.apache.sling.slingstart.model.SSMFeature;
-import org.xml.sax.Attributes;
-import org.xml.sax.ContentHandler;
-import org.xml.sax.InputSource;
-import org.xml.sax.Locator;
-import org.xml.sax.SAXException;
-import org.xml.sax.XMLReader;
-
-/**
- * Simple XML parser for the model.
- * It ignores all elements in a different namespace than the root element
- */
-public class XMLSSMModelReader {
-
-    public enum MODE {
-        INIT(null, null),
-        DELIVERABLE(INIT, "deliverable"),
-
-        VARIABKES(DELIVERABLE, "variables"),
-
-        STARTLEVEL(DELIVERABLE, "startLevel"),
-        ARTIFACT(DELIVERABLE, "artifact"),
-
-        STARTLEVEL_ARTIFACT(STARTLEVEL, "artifact"),
-
-        CONFIGURATION(DELIVERABLE, "configuration"),
-        SETTINGS(DELIVERABLE, "settings"),
-
-        FEATURE(DELIVERABLE, "feature"),
-        FEATURE_STARTLEVEL(FEATURE, "startLevel"),
-        FEATURE_ARTIFACT(FEATURE, "artifact"),
-        FEATURE_STARTLEVEL_ARTIFACT(FEATURE_STARTLEVEL, "artifact"),
-
-        FEATURE_CONFIGURATION(FEATURE, "configuration"),
-        FEATURE_SETTINGS(FEATURE, "settings");
-
-        public final MODE fromMode;
-        public final String elementName;
-
-        MODE(final MODE fm, final String en) {
-            this.fromMode = fm;
-            this.elementName = en;
-        }
-    }
-
-    /**
-     * Reads the deliverable file
-     * The reader is not closed.
-     * @throws IOException
-     */
-    public static SSMDeliverable read(final Reader reader)
-    throws IOException {
-        try {
-            final SSMDeliverable result = new SSMDeliverable();
-
-            final SAXParserFactory spf = SAXParserFactory.newInstance();
-            spf.setNamespaceAware(true);
-            SAXParser saxParser = spf.newSAXParser();
-            XMLReader xmlReader = saxParser.getXMLReader();
-            xmlReader.setContentHandler(new ContentHandler() {
-
-                private final Stack<String> elementsStack = new Stack<String>();
-
-                /** The current parsing mode. */
-                private MODE mode = MODE.INIT;
-
-                /** String builder to get text from the document. */
-                private StringBuilder text;
-
-                /** The namespace for the read xml elements. */
-                private String namespace;
-
-                /** The current feature */
-                private SSMFeature feature;
-
-                /** Current startlevel */
-                private int startLevel;
-
-                /** Current configuration. */
-                private SSMConfiguration configuration;
-
-                /** Felix config format (default) */
-                private boolean isFelixConfigurationFormat = true;
-
-                @Override
-                public void startElement(final String uri,
-                        final String localName,
-                        final String qName,
-                        final Attributes atts)
-                throws SAXException {
-                    if ( this.mode == MODE.INIT ) {
-                        if ( MODE.DELIVERABLE.elementName.equals(localName) ) {
-                            this.namespace = uri;
-                            this.mode = MODE.DELIVERABLE;
-                            this.feature = result.getOrCreateFeature(null);
-                            this.startLevel = 0;
-                        } else {
-                            throw new SAXException("Unknown root element (" + localName + "). Document must start with " + MODE.DELIVERABLE.elementName);
-                        }
-                    } else {
-                        if ( (uri == null && this.namespace == null) || (uri != null && uri.equals(this.namespace)) ) {
-                            boolean found = false;
-                            for(final MODE m : MODE.values()) {
-                                if ( this.mode == m.fromMode && localName.equals(m.elementName) ) {
-                                    this.mode = m;
-                                    found = true;
-                                    break;
-                                }
-                            }
-                            if ( !found ) {
-                                throw new SAXException("Unknown element " + localName);
-                            }
-
-                            if ( this.mode == MODE.STARTLEVEL || this.mode == MODE.FEATURE_STARTLEVEL) {
-                                int level = 0;
-                                final String levelVal = atts.getValue("level");
-                                if ( levelVal != null ) {
-                                    level = Integer.valueOf(levelVal);
-                                }
-                                this.startLevel = level;
-                            } else if ( this.mode == MODE.ARTIFACT || this.mode == MODE.FEATURE_ARTIFACT || this.mode == MODE.STARTLEVEL_ARTIFACT || this.mode == MODE.FEATURE_STARTLEVEL_ARTIFACT) {
-                                final SSMArtifact artifact = new SSMArtifact(atts.getValue("groupId"),
-                                        atts.getValue("artifactId"),
-                                        atts.getValue("version"),
-                                        atts.getValue("classifier"),
-                                        atts.getValue("type"));
-                                this.feature.getOrCreateStartLevel(this.startLevel).getArtifacts().add(artifact);
-                            } else if ( this.mode == MODE.CONFIGURATION || this.mode == MODE.FEATURE_CONFIGURATION) {
-                                this.configuration = this.feature.getOrCreateConfiguration(atts.getValue("pid"), atts.getValue("factory"));
-                                this.isFelixConfigurationFormat = !"true".equals(atts.getValue("props"));
-                                this.text = new StringBuilder();
-                            } else if ( this.mode == MODE.SETTINGS || this.mode == MODE.FEATURE_SETTINGS) {
-                                this.text = new StringBuilder();
-
-                            } else if ( this.mode == MODE.FEATURE ) {
-                                final String runMode = atts.getValue("runModes");
-                                if ( runMode == null || runMode.trim().length() == 0 ) {
-                                    throw new SAXException("Required attribute runModes missing for runMode element");
-                                }
-                                this.feature = result.getOrCreateFeature(runMode.split(","));
-                                this.startLevel = 0;
-
-                            } else {
-                                this.text = new StringBuilder();
-                            }
-                        }
-                    }
-                    elementsStack.push(localName);
-                }
-
-                @Override
-                public void endElement(final String uri, final String localName, final String qName)
-                throws SAXException {
-                    final String openElement = this.elementsStack.pop();
-                    if ( !openElement.equals(localName) ) {
-                        throw new SAXException("Invalid document - expected closing " + openElement + " but received " + localName);
-                    }
-                    if ( (uri == null && this.namespace == null) || (uri != null && uri.equals(this.namespace)) ) {
-                        String textValue = (text != null ? text.toString() : null);
-                        if ( textValue != null ) {
-                            textValue = textValue.trim();
-                            if ( textValue.length() == 0 ) {
-                                textValue = null;
-                            }
-                        }
-                        text = null;
-                        boolean found = false;
-                        final MODE prevMode = this.mode;
-                        for(final MODE m : MODE.values()) {
-                            if ( this.mode == m && localName.equals(m.elementName) ) {
-                                this.mode = m.fromMode;
-                                found = true;
-                                break;
-                            }
-                        }
-                        if ( !found ) {
-                            throw new SAXException("Unknown element " + localName);
-                        }
-                        if ( prevMode == MODE.STARTLEVEL || prevMode == MODE.FEATURE_STARTLEVEL ) {
-                            this.startLevel = 0;
-                        } else if ( prevMode == MODE.CONFIGURATION || prevMode == MODE.FEATURE_CONFIGURATION ) {
-                            if ( this.configuration.isSpecial() ) {
-                                this.configuration.getProperties().put(this.configuration.getPid(), textValue);
-                            } else {
-                                if ( this.isFelixConfigurationFormat ) {
-                                    ByteArrayInputStream bais = null;
-                                    try {
-                                        bais = new ByteArrayInputStream(textValue.getBytes("UTF-8"));
-                                        @SuppressWarnings("unchecked")
-                                        final Dictionary<String, Object> props = ConfigurationHandler.read(bais);
-                                        final Enumeration<String> e = props.keys();
-                                        while ( e.hasMoreElements() ) {
-                                            final String key = e.nextElement();
-                                            this.configuration.getProperties().put(key, props.get(key));
-                                        }
-                                    } catch ( final IOException ioe ) {
-                                        throw new SAXException(ioe);
-                                    } finally {
-                                        if ( bais != null ) {
-                                            try {
-                                                bais.close();
-                                            } catch ( final IOException ignore ) {
-                                                // ignore
-                                            }
-                                        }
-                                    }
-                                } else {
-                                    final Properties props = new Properties();
-                                    try {
-                                        props.load(new StringReader(textValue));
-                                    } catch ( final IOException ioe ) {
-                                        throw new SAXException(ioe);
-                                    }
-                                    for(final Map.Entry<Object, Object> entry : props.entrySet()) {
-                                        this.configuration.getProperties().put((String)entry.getKey(), (String)entry.getValue());
-                                    }
-                                }
-                            }
-                            this.configuration = null;
-                        } else if ( prevMode == MODE.SETTINGS || prevMode == MODE.FEATURE_SETTINGS) {
-                            final LineNumberReader reader = new LineNumberReader(new StringReader(textValue));
-                            String line = null;
-                            try {
-                                while ( (line = reader.readLine()) != null ) {
-                                    if ( line.startsWith("#") || line.trim().isEmpty()) {
-                                        continue;
-                                    }
-                                    final int pos = line.indexOf("=");
-                                    if ( pos == -1 || line.indexOf("=", pos + 1 ) != -1 ) {
-                                        throw new SAXException("Invalid property definition: " + line);
-                                    }
-                                    feature.getSettings().put(line.substring(0, pos), line.substring(pos + 1));
-                                }
-                            } catch (final IOException io) {
-                                throw new SAXException(io);
-                            }
-                        } else if ( prevMode == MODE.FEATURE ) {
-                            this.feature = result.getOrCreateFeature(null);
-                            this.startLevel = 0;
-                        } else if ( prevMode == MODE.VARIABKES ) {
-                            final LineNumberReader reader = new LineNumberReader(new StringReader(textValue));
-                            String line = null;
-                            try {
-                                while ( (line = reader.readLine()) != null ) {
-                                    final int pos = line.indexOf("=");
-                                    if ( pos == -1 || line.indexOf("=", pos + 1 ) != -1 ) {
-                                        throw new SAXException("Invalid property definition: " + line);
-                                    }
-                                    result.getVariables().put(line.substring(0, pos), line.substring(pos + 1));
-                                }
-                            } catch (final IOException io) {
-                                throw new SAXException(io);
-                            }
-                        }
-                    }
-                }
-
-                @Override
-                public void characters(final char[] ch, final int start, final int length)
-                        throws SAXException {
-                    if ( text != null ) {
-                        text.append(ch, start, length);
-                    }
-                }
-
-                @Override
-                public void startDocument() throws SAXException {
-                    // nothing to do
-                }
-
-                @Override
-                public void skippedEntity(final String name) throws SAXException {
-                    // nothing to do
-                }
-
-                @Override
-                public void setDocumentLocator(final Locator locator) {
-                    // nothing to do
-                }
-
-                @Override
-                public void processingInstruction(final String target, final String data)
-                        throws SAXException {
-                    // nothing to do
-                }
-
-                @Override
-                public void ignorableWhitespace(final char[] ch, final int start,final  int length)
-                throws SAXException {
-                    // nothing to do
-                }
-
-                @Override
-                public void startPrefixMapping(final String prefix, final String uri)
-                throws SAXException {
-                    // nothing to do
-                }
-
-                @Override
-                public void endPrefixMapping(final String prefix) throws SAXException {
-                    // nothing to do
-                }
-
-                @Override
-                public void endDocument() throws SAXException {
-                    // nothing to do
-                }
-
-            });
-            xmlReader.parse(new InputSource(reader));
-
-            return result;
-        } catch ( final SAXException se) {
-            throw new IOException(se);
-        } catch ( final ParserConfigurationException pce ) {
-            throw new IOException(pce);
-        }
-    }
-}
diff --git a/src/main/java/org/apache/sling/slingstart/model/xml/XMLSSMModelWriter.java b/src/main/java/org/apache/sling/slingstart/model/xml/XMLSSMModelWriter.java
deleted file mode 100644
index 5d13094..0000000
--- a/src/main/java/org/apache/sling/slingstart/model/xml/XMLSSMModelWriter.java
+++ /dev/null
@@ -1,215 +0,0 @@
-/*
- * 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.sling.slingstart.model.xml;
-
-import java.io.ByteArrayOutputStream;
-import java.io.IOException;
-import java.io.PrintWriter;
-import java.io.Writer;
-import java.util.Map;
-
-import org.apache.felix.cm.file.ConfigurationHandler;
-import org.apache.sling.slingstart.model.SSMArtifact;
-import org.apache.sling.slingstart.model.SSMConfiguration;
-import org.apache.sling.slingstart.model.SSMDeliverable;
-import org.apache.sling.slingstart.model.SSMFeature;
-import org.apache.sling.slingstart.model.SSMStartLevel;
-
-/**
- * Simple writer for the a model
- */
-public class XMLSSMModelWriter {
-
-    private static void printRunModeAttribute(final PrintWriter pw, final SSMFeature rmd) {
-        if ( rmd.getRunModes() != null && rmd.getRunModes().length > 0 ) {
-            pw.print(" modes=\"");
-            boolean first = true;
-            for(final String mode : rmd.getRunModes()) {
-                if ( first ) {
-                    first = false;
-                } else {
-                    pw.print(",");
-                }
-                pw.print(escapeXml(mode));
-            }
-            pw.print("\"");
-        }
-
-    }
-
-    private static String INDENT = "    ";
-
-
-    /**
-     * Writes the model to the writer.
-     * The writer is not closed.
-     * @param writer
-     * @param subystem
-     * @throws IOException
-     */
-    public static void write(final Writer writer, final SSMDeliverable subsystem)
-    throws IOException {
-        final PrintWriter pw = new PrintWriter(writer);
-        pw.println("<?xml version=\"1.0\" encoding=\"UTF-8\"?>");
-        pw.println("<deliverable>");
-
-        // properties
-        if ( subsystem.getVariables().size() > 0 ) {
-            pw.print(INDENT);
-            pw.println("<variables><![CDATA[");
-            for(final Map.Entry<String, String> entry : subsystem.getVariables().entrySet()) {
-                pw.print(INDENT);
-                pw.print(INDENT);
-                pw.print(entry.getKey());
-                pw.print("=");
-                pw.println(entry.getValue());
-            }
-            pw.print(INDENT);
-            pw.println("]]></variables>");
-        }
-        for(final SSMFeature feature : subsystem.getFeatures()) {
-            // TODO - don't write out empty features
-            String indent = INDENT;
-            if ( feature.getRunModes() != null ) {
-                pw.print(indent);
-                pw.print("<feature");
-                printRunModeAttribute(pw, feature);
-                pw.println(">");
-                indent = indent + INDENT;
-            }
-
-            for(final SSMStartLevel startLevel : feature.getStartLevels()) {
-                if ( startLevel.getArtifacts().size() == 0 ) {
-                    continue;
-                }
-                if ( startLevel.getLevel() != 0 ) {
-                    pw.print(indent);
-                    pw.print("<startLevel");
-                    pw.print(" level=\"");
-                    pw.print(String.valueOf(startLevel.getLevel()));
-                    pw.print("\"");
-                    pw.println(">");
-                    indent += INDENT;
-                }
-                for(final SSMArtifact ad : startLevel.getArtifacts()) {
-                    pw.print(indent);
-                    pw.print("<artifact groupId=\"");
-                    pw.print(escapeXml(ad.getGroupId()));
-                    pw.print("\" artifactId=\"");
-                    pw.print(escapeXml(ad.getArtifactId()));
-                    pw.print("\" version=\"");
-                    pw.print(escapeXml(ad.getVersion()));
-                    pw.print("\"");
-                    if ( !"jar".equals(ad.getType()) ) {
-                        pw.print(" type=\"");
-                        pw.print(escapeXml(ad.getType()));
-                        pw.print("\"");
-                    }
-                    if ( ad.getClassifier() != null ) {
-                        pw.print(" classifier=\"");
-                        pw.print(escapeXml(ad.getClassifier()));
-                        pw.print("\"");
-                    }
-                    pw.println("/>");
-                }
-                if ( startLevel.getLevel() != 0 ) {
-                    indent = indent.substring(0, indent.length() - INDENT.length());
-                    pw.print(indent);
-                    pw.println("</startLevel>");
-                }
-            }
-
-            for(final SSMConfiguration config : feature.getConfigurations()) {
-                pw.print(indent);
-                pw.print("<configuration ");
-                if ( config.getFactoryPid() != null ) {
-                    pw.print("factory=\"");
-                    pw.print(escapeXml(config.getFactoryPid()));
-                    pw.print("\" ");
-                }
-                pw.print("pid=\"");
-                pw.print(escapeXml(config.getPid()));
-                pw.println("\"><![CDATA[");
-                if ( config.isSpecial() ) {
-                    pw.println(config.getProperties().get(config.getPid()));
-                } else {
-                    final ByteArrayOutputStream os = new ByteArrayOutputStream();
-                    try {
-                        ConfigurationHandler.write(os , config.getProperties());
-                    } finally {
-                        os.close();
-                    }
-                    final String configString = new String(os.toByteArray(), "UTF-8");
-                    pw.println(configString);
-                }
-                pw.print(indent);
-                pw.println("]]></configuration>");
-            }
-
-            if ( feature.getSettings().size() > 0 ) {
-                pw.print(indent);
-                pw.println("<settings><![CDATA[");
-
-                for(final Map.Entry<String, String> entry :feature.getSettings().entrySet()) {
-                    pw.print(INDENT);
-                    pw.print(INDENT);
-                    pw.print(entry.getKey());
-                    pw.print("=");
-                    pw.println(entry.getValue());
-                }
-
-                pw.print(indent);
-                pw.println("]]></settings>");
-            }
-
-            if ( feature.getRunModes() != null ) {
-                indent = indent.substring(0, indent.length() - INDENT.length());
-                pw.print(indent);
-                pw.println("</feature>");
-            }
-        }
-
-        pw.println("</deliverable>");
-    }
-
-    /** Escape xml text */
-    private static String escapeXml(final String input) {
-        if (input == null) {
-            return null;
-        }
-
-        final StringBuilder b = new StringBuilder(input.length());
-        for(int i = 0;i  < input.length(); i++) {
-            final char c = input.charAt(i);
-            if(c == '&') {
-                b.append("&amp;");
-            } else if(c == '<') {
-                b.append("&lt;");
-            } else if(c == '>') {
-                b.append("&gt;");
-            } else if(c == '"') {
-                b.append("&quot;");
-            } else if(c == '\'') {
-                b.append("&apos;");
-            } else {
-                b.append(c);
-            }
-        }
-        return b.toString();
-    }
-
-}
diff --git a/src/main/java/org/apache/sling/slingstart/model/xml/package-info.java b/src/main/java/org/apache/sling/slingstart/model/xml/package-info.java
deleted file mode 100644
index ee86132..0000000
--- a/src/main/java/org/apache/sling/slingstart/model/xml/package-info.java
+++ /dev/null
@@ -1,24 +0,0 @@
-/*
- * 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.
- */
-
-@Version("1.0")
-package org.apache.sling.slingstart.model.xml;
-
-import aQute.bnd.annotation.Version;
-

-- 
To stop receiving notification emails like this one, please contact
"commits@sling.apache.org" <co...@sling.apache.org>.