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:17 UTC
[sling-org-apache-sling-provisioning-model] 21/34: Remove old
slingstart model
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 55e51ed39c72b577c336971779174e3f7a74364f
Author: Carsten Ziegeler <cz...@apache.org>
AuthorDate: Wed Oct 1 13:49:29 2014 +0000
Remove old slingstart model
git-svn-id: https://svn.apache.org/repos/asf/sling/trunk/tooling/support/slingstart-model@1628703 13f79535-47bb-0310-9956-ffa450edef68
---
.../apache/sling/slingstart/model/SSMArtifact.java | 232 -------------------
.../sling/slingstart/model/SSMConfiguration.java | 83 -------
.../sling/slingstart/model/SSMConstants.java | 50 ----
.../sling/slingstart/model/SSMDeliverable.java | 114 ----------
.../apache/sling/slingstart/model/SSMFeature.java | 206 -----------------
.../apache/sling/slingstart/model/SSMMerger.java | 82 -------
.../sling/slingstart/model/SSMStartLevel.java | 80 -------
.../sling/slingstart/model/SSMTraceable.java | 47 ----
.../org/apache/sling/slingstart/model/SSMUtil.java | 194 ----------------
.../sling/slingstart/model/SSMValidator.java | 94 --------
.../sling/slingstart/model/package-info.java | 24 --
.../slingstart/model/txt/TXTSSMModelReader.java | 253 ---------------------
.../slingstart/model/txt/TXTSSMModelWriter.java | 203 -----------------
.../sling/slingstart/model/txt/package-info.java | 24 --
14 files changed, 1686 deletions(-)
diff --git a/src/main/java/org/apache/sling/slingstart/model/SSMArtifact.java b/src/main/java/org/apache/sling/slingstart/model/SSMArtifact.java
deleted file mode 100644
index 03c473e..0000000
--- a/src/main/java/org/apache/sling/slingstart/model/SSMArtifact.java
+++ /dev/null
@@ -1,232 +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;
-
-import java.util.HashMap;
-import java.util.Map;
-
-/**
- * Description of an artifact.
- * An artifact is described by it's Apache Maven coordinates consisting of group id, artifact id, and version.
- * In addition, the classifier and type can be specified as well.
- * An artifact can have any metadata.
- */
-public class SSMArtifact extends SSMTraceable {
-
- private final String groupId;
- private final String artifactId;
- private final String version;
- private final String classifier;
- private final String type;
-
- private final Map<String, String> metadata = new HashMap<String, String>();
-
- /**
- * Create a new artifact object
- * @param gId The group id (required)
- * @param aId The artifact id (required)
- * @param version The version (required)
- * @param classifier The classifier (optional)
- * @param type The type/extension (optional, defaults to jar)
- */
- public SSMArtifact(final String gId,
- final String aId,
- final String version,
- final String classifier,
- final String type) {
- this.groupId = (gId != null ? gId.trim() : null);
- this.artifactId = (aId != null ? aId.trim() : null);
- this.version = (version != null ? version.trim() : null);
- final String trimmedType = (type != null ? type.trim() : null);
- if ( "bundle".equals(trimmedType) || trimmedType == null || trimmedType.isEmpty() ) {
- this.type = "jar";
- } else {
- this.type = trimmedType;
- }
- final String trimmedClassifier = (classifier != null ? classifier.trim() : null);
- if ( trimmedClassifier != null && trimmedClassifier.isEmpty() ) {
- this.classifier = null;
- } else {
- this.classifier = trimmedClassifier;
- }
- }
-
- /**
- * Create a new artifact from a maven url,
- * 'mvn:' [ repository-url '!' ] group-id '/' artifact-id [ '/' [version] [ '/' [type] [ '/' classifier ] ] ] ]
- * @param url The url
- * @return A new artifact
- * @throws IllegalArgumentException If the url is not valid
- */
- public static SSMArtifact fromMvnUrl(final String url) {
- if ( url == null || !url.startsWith("mvn:") ) {
- throw new IllegalArgumentException("Invalid mvn url: " + url);
- }
- final String content = url.substring(4);
- // ignore repository url
- int pos = content.indexOf('!');
- if ( pos != -1 ) {
- throw new IllegalArgumentException("Repository url is not supported for Maven artifacts at the moment.");
- }
- final String coordinates = (pos == -1 ? content : content.substring(pos + 1));
- String gId = null;
- String aId = null;
- String version = null;
- String type = null;
- String classifier = null;
- int part = 0;
- String value = coordinates;
- while ( value != null ) {
- pos = value.indexOf('/');
- final String current;
- if ( pos == -1 ) {
- current = value;
- value = null;
- } else {
- if ( pos == 0 ) {
- current = null;
- } else {
- current = value.substring(0, pos);
- }
- value = value.substring(pos + 1);
- }
- if ( current != null ) {
- if ( part == 0 ) {
- gId = current;
- } else if ( part == 1 ) {
- aId = current;
- } else if ( part == 2 ) {
- version = current;
- } else if ( part == 3 ) {
- type = current;
- } else if ( part == 4 ) {
- classifier = current;
- }
- }
- part++;
- }
- if ( version == null ) {
- version = "LATEST";
- }
- return new SSMArtifact(gId, aId, version, classifier, type);
- }
-
- /**
- * Return a mvn url
- * @return A mvn url
- * @see #fromMvnUrl(String)
- */
- public String toMvnUrl() {
- final StringBuilder sb = new StringBuilder("mvn:");
- sb.append(this.groupId);
- sb.append('/');
- sb.append(this.artifactId);
- sb.append('/');
- sb.append(this.version);
- if ( this.classifier != null || !"jar".equals(this.type)) {
- sb.append('/');
- sb.append(this.type);
- if ( this.classifier != null ) {
- sb.append('/');
- sb.append(this.classifier);
- }
- }
- return sb.toString();
- }
-
- /**
- * Return the group id.
- * @return The group id.
- */
- public String getGroupId() {
- return groupId;
- }
-
- /**
- * Return the artifact id.
- * @return The artifact id.
- */
- public String getArtifactId() {
- return artifactId;
- }
-
- /**
- * Return the version.
- * @return The version.
- */
- public String getVersion() {
- return version;
- }
-
- /**
- * Return the optional classifier.
- * @return The classifier or null.
- */
- public String getClassifier() {
- return classifier;
- }
-
- /**
- * Return the type.
- * @return The type.
- */
- public String getType() {
- return type;
- }
-
- /**
- * Get the metadata of the artifact.
- * @return The metadata.
- */
- public Map<String, String> getMetadata() {
- return this.metadata;
- }
-
- /**
- * Create a Maven like relative repository path.
- */
- public String getRepositoryPath() {
- final StringBuilder sb = new StringBuilder();
- sb.append(groupId.replace('.', '/'));
- sb.append('/');
- sb.append(artifactId);
- sb.append('/');
- sb.append(version);
- sb.append('/');
- sb.append(artifactId);
- sb.append('-');
- sb.append(version);
- if ( classifier != null ) {
- sb.append('-');
- sb.append(classifier);
- }
- sb.append('.');
- sb.append(type);
- return sb.toString();
- }
-
- @Override
- public String toString() {
- return "SSMArtifact [groupId=" + groupId
- + ", artifactId=" + artifactId
- + ", version=" + version
- + ", classifier=" + classifier
- + ", type=" + type
- + ( this.getLocation() != null ? ", location=" + this.getLocation() : "")
- + "]";
- }
-}
diff --git a/src/main/java/org/apache/sling/slingstart/model/SSMConfiguration.java b/src/main/java/org/apache/sling/slingstart/model/SSMConfiguration.java
deleted file mode 100644
index f2342e2..0000000
--- a/src/main/java/org/apache/sling/slingstart/model/SSMConfiguration.java
+++ /dev/null
@@ -1,83 +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;
-
-import java.util.Dictionary;
-import java.util.Hashtable;
-
-
-/**
- * Configuration
- */
-public class SSMConfiguration extends SSMTraceable {
-
- private final String pid;
-
- private final String factoryPid;
-
- private final Dictionary<String, Object> properties = new Hashtable<String, Object>();
-
- public SSMConfiguration(final String pid, final String factoryPid) {
- this.pid = (pid != null ? pid.trim() : null);
- this.factoryPid = (factoryPid != null ? factoryPid.trim() : null);
- }
-
- /**
- * Get the pid.
- * If this is a factory configuration, it returns the alias for the configuration
- * @return The pid.
- */
- public String getPid() {
- return this.pid;
- }
-
- /**
- * Return the factory pid
- * @return The factory pid or null.
- */
- public String getFactoryPid() {
- return this.factoryPid;
- }
-
- /**
- * Is this a special configuration?
- * @return Special config
- */
- public boolean isSpecial() {
- if ( pid != null && pid.startsWith(":") ) {
- return true;
- }
- return false;
- }
-
- /**
- * Get all properties of the configuration.
- * @return The properties
- */
- public Dictionary<String, Object> getProperties() {
- return this.properties;
- }
-
- @Override
- public String toString() {
- return "SSMConfiguration [pid=" + pid
- + ", factoryPid=" + factoryPid
- + ", properties=" + properties
- + ( this.getLocation() != null ? ", location=" + this.getLocation() : "")
- + "]";
- }
-}
diff --git a/src/main/java/org/apache/sling/slingstart/model/SSMConstants.java b/src/main/java/org/apache/sling/slingstart/model/SSMConstants.java
deleted file mode 100644
index 064bb79..0000000
--- a/src/main/java/org/apache/sling/slingstart/model/SSMConstants.java
+++ /dev/null
@@ -1,50 +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;
-
-
-public abstract class SSMConstants {
-
- /** Name of the configuration containing the web.xml. */
- public static final String CFG_WEB_XML = ":web.xml";
-
- /** Name of the configuration for the bootstrap contents. */
- public static final String CFG_BOOTSTRAP = ":bootstrap";
-
- /** Unprocessed configuration values. */
- public static final String CFG_UNPROCESSED = ":rawconfig";
-
- /** Format of the unprocessed configuration values. */
- public static final String CFG_UNPROCESSED_FORMAT = ":rawconfig.format";
-
- public static final String CFG_FORMAT_FELIX_CA = "felixca";
-
- public static final String CFG_FORMAT_PROPERTIES = "properties";
-
- /** Name of the base run mode for the Sling launchpad. */
- public static final String RUN_MODE_BASE = ":base";
-
- /** Name of the boot run mode. */
- public static final String RUN_MODE_BOOT = ":boot";
-
- /** Name of the webapp run mode. */
- public static final String RUN_MODE_WEBAPP = ":webapp";
-
- /** Name of the standalone run mode. */
- public static final String RUN_MODE_STANDALONE = ":standalone";
-
-}
diff --git a/src/main/java/org/apache/sling/slingstart/model/SSMDeliverable.java b/src/main/java/org/apache/sling/slingstart/model/SSMDeliverable.java
deleted file mode 100644
index 472c40b..0000000
--- a/src/main/java/org/apache/sling/slingstart/model/SSMDeliverable.java
+++ /dev/null
@@ -1,114 +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;
-
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.Collections;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-
-/**
- * A deliverable is the central object.
- * It consists of a set of features and properties.
- * The variables can be used for specifying artifact versions, referencing them
- * with ${variableName}
- *
- * At least it has a "global" feature which contains artifacts that are always installed..
- */
-public class SSMDeliverable extends SSMTraceable {
-
- /** All features. */
- private final List<SSMFeature> features = new ArrayList<SSMFeature>();
-
- /** Variables. */
- private final Map<String, String> variables = new HashMap<String, String>();
-
- /**
- * Construct a new deliverable.
- */
- public SSMDeliverable() {
- this.features.add(new SSMFeature(null)); // global features
- }
-
- /**
- * Find the feature if available
- * @param runModes
- * @return The feature or null.
- */
- private SSMFeature findFeature(final String[] runModes) {
- final String[] sortedRunModes = SSMFeature.getSortedRunModesArray(runModes);
- SSMFeature result = null;
- for(final SSMFeature current : this.features) {
- if ( Arrays.equals(sortedRunModes, current.getRunModes()) ) {
- result = current;
- break;
- }
- }
- return result;
- }
-
- /**
- * Get the feature if available
- * @param runmode The single run mode.
- * @return The feature or null
- */
- public SSMFeature getRunMode(final String runMode) {
- return findFeature(new String[] {runMode});
- }
-
- /**
- * Get or create the feature.
- * @param runModes The run modes.
- * @return The feature for the given run modes.
- */
- public SSMFeature getOrCreateFeature(final String[] runModes) {
- SSMFeature result = findFeature(runModes);
- if ( result == null ) {
- result = new SSMFeature(runModes);
- this.features.add(result);
- Collections.sort(this.features);
- }
- return result;
- }
-
- /**
- * Return all features.
- * The returned list is modifiable and directly modifies the model.
- * @return The list of features.
- */
- public List<SSMFeature> getFeatures() {
- return this.features;
- }
-
- /**
- * Get all variables
- * @return The set of variables
- */
- public Map<String, String> getVariables() {
- return this.variables;
- }
-
- @Override
- public String toString() {
- return "SSMDeliverable [features=" + features
- + ", variables=" + variables
- + ( this.getLocation() != null ? ", location=" + this.getLocation() : "")
- + "]";
- }
-}
diff --git a/src/main/java/org/apache/sling/slingstart/model/SSMFeature.java b/src/main/java/org/apache/sling/slingstart/model/SSMFeature.java
deleted file mode 100644
index d81cd6c..0000000
--- a/src/main/java/org/apache/sling/slingstart/model/SSMFeature.java
+++ /dev/null
@@ -1,206 +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;
-
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.Collections;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-import java.util.Set;
-
-/**
- * A feature is a collection of
- * - artifacts (through start levels)
- * - configurations
- * - settings
- *
- * A feature might be tied to run modes. Only if all run modes are active,
- * this feature is active.
- * In addition to custom, user defined run modes, special run modes exists.
- * A special run mode name starts with a colon.
- */
-public class SSMFeature
- extends SSMTraceable
- implements Comparable<SSMFeature> {
-
- private final String[] runModes;
-
- private final List<SSMStartLevel> startLevels = new ArrayList<SSMStartLevel>();
-
- private final List<SSMConfiguration> configurations = new ArrayList<SSMConfiguration>();
-
- private final Map<String, String> settings = new HashMap<String, String>();
-
- public SSMFeature(final String[] runModes) {
- this.runModes = getSortedRunModesArray(runModes);
- }
-
- public static String[] getSortedRunModesArray(final String[] runModes) {
- // sort run modes
- if ( runModes != null ) {
- final List<String> list = new ArrayList<String>();
- for(final String m : runModes) {
- if ( m != null ) {
- if ( !m.trim().isEmpty() ) {
- list.add(m.trim());
- }
- }
- }
- if ( list.size() > 0 ) {
- Collections.sort(list);
- return list.toArray(new String[list.size()]);
- }
- }
- return null;
- }
-
- public String[] getRunModes() {
- return this.runModes;
- }
-
- /**
- * Check if this feature is active wrt the given set of active run modes.
- */
- public boolean isActive(final Set<String> activeRunModes) {
- boolean active = true;
- if ( runModes != null ) {
- for(final String mode : runModes) {
- if ( !activeRunModes.contains(mode) ) {
- active = false;
- break;
- }
- }
- }
- return active;
- }
-
- /**
- * Check whether this feature is a special one
- */
- public boolean isSpecial() {
- if ( runModes != null && runModes.length == 1 && runModes[0].startsWith(":") ) {
- return true;
- }
- return false;
- }
-
- /**
- * Check if this feature is tied to a single specific run mode.
- */
- public boolean isRunMode(final String mode) {
- if ( mode == null && this.runModes == null ) {
- return true;
- }
- if ( mode != null
- && this.runModes != null
- && this.runModes.length == 1
- && this.runModes[0].equals(mode) ) {
- return true;
- }
- return false;
- }
-
- /**
- * Get or create a start level
- */
- public SSMStartLevel getOrCreateStartLevel(final int startLevel) {
- for(final SSMStartLevel sl : this.startLevels) {
- if ( sl.getLevel() == startLevel ) {
- return sl;
- }
- }
- final SSMStartLevel sl = new SSMStartLevel(startLevel);
- this.startLevels.add(sl);
- Collections.sort(this.startLevels);
- return sl;
- }
-
- /**
- * Search a configuration with a pid
- */
- public SSMConfiguration getConfiguration(final String pid) {
- for(final SSMConfiguration c : this.configurations) {
- if ( pid.equals(c.getPid()) ) {
- return c;
- }
- }
- return null;
- }
-
- public SSMConfiguration getOrCreateConfiguration(final String pid, final String factoryPid) {
- SSMConfiguration found = null;
- for(final SSMConfiguration current : this.configurations) {
- if ( factoryPid == null ) {
- if ( current.getFactoryPid() == null && current.getPid().equals(pid) ) {
- found = current;
- break;
- }
- } else {
- if ( factoryPid.equals(current.getFactoryPid()) && current.getPid().equals(pid) ) {
- found = current;
- break;
- }
- }
- }
- if ( found == null ) {
- found = new SSMConfiguration(pid, factoryPid);
- this.configurations.add(found);
- }
- return found;
- }
-
- public List<SSMStartLevel> getStartLevels() {
- return this.startLevels;
- }
-
- public List<SSMConfiguration> getConfigurations() {
- return this.configurations;
- }
-
- public Map<String, String> getSettings() {
- return this.settings;
- }
-
- /**
- * @see java.lang.Comparable#compareTo(java.lang.Object)
- */
- @Override
- public int compareTo( SSMFeature o2) {
- if ( this.runModes == null ) {
- if ( o2.runModes == null ) {
- return 0;
- }
- return -1;
- }
- if ( o2.runModes == null ) {
- return 1;
- }
- return Arrays.toString(this.runModes).compareTo(Arrays.toString(o2.runModes));
- }
-
- @Override
- public String toString() {
- return "SSMFeature [runModes=" + Arrays.toString(runModes)
- + ", startLevels=" + startLevels
- + ", configurations=" + configurations
- + ", settings=" + settings
- + ( this.getLocation() != null ? ", location=" + this.getLocation() : "")
- + "]";
- }
-}
diff --git a/src/main/java/org/apache/sling/slingstart/model/SSMMerger.java b/src/main/java/org/apache/sling/slingstart/model/SSMMerger.java
deleted file mode 100644
index 09e9ad8..0000000
--- a/src/main/java/org/apache/sling/slingstart/model/SSMMerger.java
+++ /dev/null
@@ -1,82 +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;
-
-import java.util.Enumeration;
-
-
-/**
- * Merge two models
- */
-public abstract class SSMMerger {
-
- /**
- * Merge the additional model into the base model.
- * @param base The base model.
- * @param additional The additional model.
- */
- public static void merge(final SSMDeliverable base, final SSMDeliverable additional) {
- // features
- for(final SSMFeature additionlFeature : additional.getFeatures()) {
- final SSMFeature baseFeature = base.getOrCreateFeature(additionlFeature.getRunModes());
-
- // start levels
- for(final SSMStartLevel additionalStartLevel : additionlFeature.getStartLevels()) {
- // search for duplicates in other start levels
- for(final SSMArtifact artifact : additionalStartLevel.getArtifacts()) {
- for(final SSMStartLevel mySL : baseFeature.getStartLevels()) {
- if ( mySL.getLevel() == additionalStartLevel.getLevel() ) {
- continue;
- }
- final SSMArtifact myArtifact = mySL.search(artifact);
- if ( myArtifact != null ) {
- mySL.getArtifacts().remove(myArtifact);
- }
- }
- }
-
- // now merge current level
- final SSMStartLevel baseStartLevel = baseFeature.getOrCreateStartLevel(additionalStartLevel.getLevel());
-
- // artifacts
- for(final SSMArtifact a : additionalStartLevel.getArtifacts()) {
- final SSMArtifact found = baseStartLevel.search(a);
- if ( found != null ) {
- baseStartLevel.getArtifacts().remove(found);
- }
- baseStartLevel.getArtifacts().add(a);
- }
- }
-
- // configurations
- for(final SSMConfiguration config : additionlFeature.getConfigurations()) {
- final SSMConfiguration found = baseFeature.getOrCreateConfiguration(config.getPid(), config.getFactoryPid());
- final Enumeration<String> e = config.getProperties().keys();
- while ( e.hasMoreElements() ) {
- final String key = e.nextElement();
- found.getProperties().put(key, config.getProperties().get(key));
- }
- }
-
- // settings
- baseFeature.getSettings().putAll(additionlFeature.getSettings());
- }
-
- // variables
- base.getVariables().putAll(additional.getVariables());
- }
-}
diff --git a/src/main/java/org/apache/sling/slingstart/model/SSMStartLevel.java b/src/main/java/org/apache/sling/slingstart/model/SSMStartLevel.java
deleted file mode 100644
index dbad45e..0000000
--- a/src/main/java/org/apache/sling/slingstart/model/SSMStartLevel.java
+++ /dev/null
@@ -1,80 +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;
-
-import java.util.ArrayList;
-import java.util.List;
-
-/**
- * A start level holds a set of artifacts.
- * A valid start level is positive, start level 0 means the default OSGi start level.
- */
-public class SSMStartLevel extends SSMTraceable
- implements Comparable<SSMStartLevel> {
-
- private final int level;
-
- private final List<SSMArtifact> artifacts = new ArrayList<SSMArtifact>();
-
- public SSMStartLevel(final int level) {
- this.level = level;
- }
-
- public int getLevel() {
- return this.level;
- }
-
- public List<SSMArtifact> getArtifacts() {
- return this.artifacts;
- }
-
- /**
- * Search an artifact with the same groupId, artifactId, version, type and classifier.
- * Version is not considered.
- */
- public SSMArtifact search(final SSMArtifact template) {
- SSMArtifact found = null;
- for(final SSMArtifact current : this.artifacts) {
- if ( current.getGroupId().equals(template.getGroupId())
- && current.getArtifactId().equals(template.getArtifactId())
- && current.getClassifier().equals(template.getClassifier())
- && current.getType().equals(template.getType()) ) {
- found = current;
- break;
- }
- }
- return found;
- }
-
- @Override
- public int compareTo(final SSMStartLevel o) {
- if ( this.level < o.level ) {
- return -1;
- } else if ( this.level > o.level ) {
- return 1;
- }
- return 0;
- }
-
- @Override
- public String toString() {
- return "SSMStartLevel [level=" + level
- + ", artifacts=" + artifacts
- + ( this.getLocation() != null ? ", location=" + this.getLocation() : "")
- + "]";
- }
-}
diff --git a/src/main/java/org/apache/sling/slingstart/model/SSMTraceable.java b/src/main/java/org/apache/sling/slingstart/model/SSMTraceable.java
deleted file mode 100644
index 78be78c..0000000
--- a/src/main/java/org/apache/sling/slingstart/model/SSMTraceable.java
+++ /dev/null
@@ -1,47 +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;
-
-public abstract class SSMTraceable {
-
- private String location;
-
- private String comment;
-
- public String getLocation() {
- return this.location;
- }
-
- public void setLocation(final String value) {
- this.location = value;
- }
-
- public String getComment() {
- return this.comment;
- }
-
- public void setComment(final String value) {
- this.comment = value;
- }
-
- @Override
- public String toString() {
- return "SSMTraceable [location=" + location + ", comment=" + comment
- + "]";
- }
-}
-
diff --git a/src/main/java/org/apache/sling/slingstart/model/SSMUtil.java b/src/main/java/org/apache/sling/slingstart/model/SSMUtil.java
deleted file mode 100644
index a3c3b03..0000000
--- a/src/main/java/org/apache/sling/slingstart/model/SSMUtil.java
+++ /dev/null
@@ -1,194 +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;
-
-import java.io.ByteArrayInputStream;
-import java.io.IOException;
-import java.io.StringReader;
-import java.util.Dictionary;
-import java.util.Enumeration;
-import java.util.Map;
-import java.util.Properties;
-
-import org.apache.felix.cm.file.ConfigurationHandler;
-
-/**
- * Utility methods
- */
-public abstract class SSMUtil {
-
- /**
- * Optional variable resolver
- */
- public interface VariableResolver {
-
- /**
- * Resolve the variable.
- * An implementation might get the value of a variable from the system properties,
- * or the environment etc.
- * As a fallback, the resolver should check the variables of the model.
- * @param model The model
- * @param name The variable name
- * @return The variable value or null.
- */
- String resolve(final SSMDeliverable model, final String name);
- }
-
- /**
- * Replace all variables in the model and return a new model with the replaced values.
- * @param model The base model.
- * @param resolver Optional variable resolver.
- * @return The model with replaced variables.
- * @throws IllegalArgumentException If a variable can't be replaced or configuration properties can't be parsed
- */
- public static SSMDeliverable getEffectiveModel(final SSMDeliverable model, final VariableResolver resolver) {
- final SSMDeliverable result = new SSMDeliverable();
- result.setComment(model.getComment());
- result.setLocation(model.getLocation());
- result.getVariables().putAll(model.getVariables());
-
- for(final SSMFeature feature : model.getFeatures()) {
- final SSMFeature newFeature = result.getOrCreateFeature(feature.getRunModes());
- newFeature.setComment(feature.getComment());
- newFeature.setLocation(feature.getLocation());
-
- for(final SSMStartLevel startLevel : feature.getStartLevels()) {
- final SSMStartLevel newStartLevel = newFeature.getOrCreateStartLevel(startLevel.getLevel());
- newStartLevel.setComment(startLevel.getComment());
- newStartLevel.setLocation(startLevel.getLocation());
-
- for(final SSMArtifact artifact : startLevel.getArtifacts()) {
- final SSMArtifact newArtifact = new SSMArtifact(replace(model, artifact.getGroupId(), resolver),
- replace(model, artifact.getArtifactId(), resolver),
- replace(model, artifact.getVersion(), resolver),
- replace(model, artifact.getClassifier(), resolver),
- replace(model, artifact.getType(), resolver));
- newArtifact.setComment(artifact.getComment());
- newArtifact.setLocation(artifact.getLocation());
-
- newStartLevel.getArtifacts().add(newArtifact);
- }
- }
-
- for(final SSMConfiguration config : feature.getConfigurations()) {
- final SSMConfiguration newConfig = new SSMConfiguration(config.getPid(), config.getFactoryPid());
- newConfig.setComment(config.getComment());
- newConfig.setLocation(config.getLocation());
-
- // check for raw configuration
- final String rawConfig = (String)config.getProperties().get(SSMConstants.CFG_UNPROCESSED);
- if ( rawConfig != null ) {
- final String format = (String)config.getProperties().get(SSMConstants.CFG_UNPROCESSED_FORMAT);
-
- if ( SSMConstants.CFG_FORMAT_PROPERTIES.equals(format) ) {
- // properties
- final Properties props = new Properties();
- try {
- props.load(new StringReader(rawConfig));
- } catch ( final IOException ioe) {
- throw new IllegalArgumentException("Unable to read configuration properties.", ioe);
- }
- final Enumeration<Object> i = props.keys();
- while ( i.hasMoreElements() ) {
- final String key = (String)i.nextElement();
- newConfig.getProperties().put(key, props.get(key));
- }
- } else {
- // Apache Felix CA format
- ByteArrayInputStream bais = null;
- try {
- bais = new ByteArrayInputStream(rawConfig.getBytes("UTF-8"));
- @SuppressWarnings("unchecked")
- final Dictionary<String, Object> props = ConfigurationHandler.read(bais);
- final Enumeration<String> i = props.keys();
- while ( i.hasMoreElements() ) {
- final String key = i.nextElement();
- newConfig.getProperties().put(key, props.get(key));
- }
- } catch ( final IOException ioe) {
- throw new IllegalArgumentException("Unable to read configuration properties.", ioe);
- } finally {
- if ( bais != null ) {
- try {
- bais.close();
- } catch ( final IOException ignore ) {
- // ignore
- }
- }
- }
- }
- } else {
- // simply copy
- final Enumeration<String> i = config.getProperties().keys();
- while ( i.hasMoreElements() ) {
- final String key = i.nextElement();
- newConfig.getProperties().put(key, config.getProperties().get(key));
- }
- }
-
- newFeature.getConfigurations().add(newConfig);
- }
-
- for(final Map.Entry<String, String> entry : feature.getSettings().entrySet() ) {
- newFeature.getSettings().put(entry.getKey(), replace(model, entry.getValue(), resolver));
- }
- }
- return result;
- }
-
- /**
- * Replace properties in the string.
- *
- * @param model The model
- * @param v The variable name
- * @param resolver Optional resolver
- * @result The value of the variable
- * @throws IllegalArgumentException
- */
- private static String replace(final SSMDeliverable model, final String v, final VariableResolver resolver) {
- if ( v == null ) {
- return null;
- }
- String msg = v;
- // check for variables
- int pos = -1;
- int start = 0;
- while ( ( pos = msg.indexOf('$', start) ) != -1 ) {
- if ( msg.length() > pos && msg.charAt(pos + 1) == '{' && (pos == 0 || msg.charAt(pos - 1) != '$') ) {
- final int endPos = msg.indexOf('}', pos);
- if ( endPos == -1 ) {
- start = pos + 1;
- } else {
- final String name = msg.substring(pos + 2, endPos);
- final String value;
- if ( resolver != null ) {
- value = resolver.resolve(model, name);
- } else {
- value = model.getVariables().get(name);
- }
- if ( value == null ) {
- throw new IllegalArgumentException("Unknown variable: " + name);
- }
- msg = msg.substring(0, pos) + value + msg.substring(endPos + 1);
- }
- } else {
- start = pos + 1;
- }
- }
- return msg;
- }
-}
diff --git a/src/main/java/org/apache/sling/slingstart/model/SSMValidator.java b/src/main/java/org/apache/sling/slingstart/model/SSMValidator.java
deleted file mode 100644
index b5ee003..0000000
--- a/src/main/java/org/apache/sling/slingstart/model/SSMValidator.java
+++ /dev/null
@@ -1,94 +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;
-
-import java.util.Arrays;
-import java.util.HashMap;
-import java.util.Map;
-
-/**
- * Validate a complete model.
- */
-public abstract class SSMValidator {
-
- /**
- * Validates the model.
- * @param model
- * @return
- */
- public static Map<SSMTraceable, String> validate(final SSMDeliverable model) {
- final Map<SSMTraceable, String> errors = new HashMap<SSMTraceable, String>();
-
- for(final SSMFeature feature : model.getFeatures() ) {
- final String[] rm = feature.getRunModes();
- if ( rm != null ) {
- boolean hasSpecial = false;
- for(final String m : rm) {
- if ( m.startsWith(":") ) {
- if ( hasSpecial ) {
- errors.put(feature, "Invalid modes " + Arrays.toString(rm));
- break;
- }
- hasSpecial = true;
- }
- }
- }
- for(final SSMStartLevel sl : feature.getStartLevels()) {
- if ( sl.getLevel() < 0 ) {
- errors.put(sl, "Invalid start level " + sl.getLevel());
- }
- for(final SSMArtifact a : sl.getArtifacts()) {
- String error = null;
- if ( a.getGroupId() == null || a.getGroupId().isEmpty() ) {
- error = "groupId missing";
- }
- if ( a.getArtifactId() == null || a.getArtifactId().isEmpty() ) {
- error = (error != null ? error + ", " : "") + "artifactId missing";
- }
- if ( a.getVersion() == null || a.getVersion().isEmpty() ) {
- error = (error != null ? error + ", " : "") + "version missing";
- }
- if ( a.getType() == null || a.getType().isEmpty() ) {
- error = (error != null ? error + ", " : "") + "type missing";
- }
- if (error != null) {
- errors.put(a, error);
- }
- }
- }
- for(final SSMConfiguration c : feature.getConfigurations()) {
- String error = null;
- if ( c.getPid() == null || c.getPid().isEmpty() ) {
- error = "pid missing";
- }
- if ( c.isSpecial() && c.getFactoryPid() != null ) {
- error = (error != null ? error + ", " : "") + "factory pid not allowed for special configuration";
- }
- if ( c.getProperties().isEmpty() ) {
- error = (error != null ? error + ", " : "") + "configuration properties missing";
- }
- if (error != null) {
- errors.put(c, error);
- }
- }
- }
- if ( errors.size() == 0 ) {
- return null;
- }
- return errors;
- }
-}
diff --git a/src/main/java/org/apache/sling/slingstart/model/package-info.java b/src/main/java/org/apache/sling/slingstart/model/package-info.java
deleted file mode 100644
index fc31712..0000000
--- a/src/main/java/org/apache/sling/slingstart/model/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;
-
-import aQute.bnd.annotation.Version;
-
diff --git a/src/main/java/org/apache/sling/slingstart/model/txt/TXTSSMModelReader.java b/src/main/java/org/apache/sling/slingstart/model/txt/TXTSSMModelReader.java
deleted file mode 100644
index 2451d99..0000000
--- a/src/main/java/org/apache/sling/slingstart/model/txt/TXTSSMModelReader.java
+++ /dev/null
@@ -1,253 +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.txt;
-
-import java.io.IOException;
-import java.io.LineNumberReader;
-import java.io.Reader;
-
-import org.apache.sling.slingstart.model.SSMArtifact;
-import org.apache.sling.slingstart.model.SSMConfiguration;
-import org.apache.sling.slingstart.model.SSMConstants;
-import org.apache.sling.slingstart.model.SSMDeliverable;
-import org.apache.sling.slingstart.model.SSMFeature;
-import org.apache.sling.slingstart.model.SSMStartLevel;
-import org.apache.sling.slingstart.model.SSMTraceable;
-
-
-public class TXTSSMModelReader {
-
- public static final String FELIX_FORMAT_SUFFIX = "FORMAT:felix.config";
-
- private enum MODE {
- NONE,
- VARS,
- FEATURE,
- START_LEVEL,
- CONFIGURATION,
- SETTINGS,
- ARTIFACT
- }
-
- /**
- * Reads the deliverable file
- * The reader is not closed.
- * @throws IOException
- */
- public static SSMDeliverable read(final Reader reader, final String location)
- throws IOException {
- final TXTSSMModelReader mr = new TXTSSMModelReader(location);
- return mr.readModel(reader);
- }
-
- private MODE mode = MODE.NONE;
-
- private final SSMDeliverable model = new SSMDeliverable();
-
- private SSMFeature feature = null;
- private SSMStartLevel startLevel = null;
- private SSMConfiguration config = null;
- private SSMArtifact artifact = null;
-
- private String comment = null;
-
- private StringBuilder configBuilder = null;
-
- private LineNumberReader lineNumberReader;
-
- private TXTSSMModelReader(final String location) {
- this.model.setLocation(location);
- }
-
- private SSMDeliverable readModel(final Reader reader)
- throws IOException {
-
- boolean global = true;
-
- lineNumberReader = new LineNumberReader(reader);
- String line;
- while ( (line = lineNumberReader.readLine()) != null ) {
- // ignore empty line
- if ( line.trim().isEmpty() ) {
- continue;
- }
- // comment?
- if ( line.startsWith("#") ) {
- checkConfig();
- mode = MODE.NONE;
- final String c = line.substring(1).trim();
- if ( comment == null ) {
- comment = c;
- } else {
- comment = comment + "\n" + c;
- }
- continue;
- }
-
- if ( global ) {
- global = false;
- model.setComment(comment);
- comment = null;
- }
-
- final String trimmedLine = line.trim();
- final int pos = line.indexOf(':');
- final String params = (pos != -1 ? line.substring(pos + 1).trim() : null);
-
- if ( trimmedLine.startsWith("feature:") ) {
- checkConfig();
-
- mode = MODE.FEATURE;
- feature = model.getOrCreateFeature(params.split(","));
- this.init(feature);
- startLevel = feature.getOrCreateStartLevel(0);
-
- } else if ( trimmedLine.startsWith("variables:") ) {
- checkConfig();
-
- if ( comment != null ) {
- throw new IOException("comment not allowed for variables in line " + this.lineNumberReader.getLineNumber());
- }
- mode = MODE.VARS;
-
- } else if ( trimmedLine.startsWith("startLevel:") ) {
- checkConfig();
-
- if ( feature == null ) {
- throw new IOException("startlevel outside of feature in line " + this.lineNumberReader.getLineNumber());
- }
- int level = (params.length() == 0 ? level = 0 : Integer.valueOf(params));
- startLevel = feature.getOrCreateStartLevel(level);
- this.init(startLevel);
- mode = MODE.START_LEVEL;
-
- } else if ( trimmedLine.startsWith("config:") ) {
- checkConfig();
-
- if ( feature == null ) {
- throw new IOException("configuration outside of feature in line " + this.lineNumberReader.getLineNumber());
- }
-
- String format = SSMConstants.CFG_FORMAT_FELIX_CA;
- if ( trimmedLine.length() > 7 && !Character.isWhitespace(trimmedLine.charAt(7)) ) {
- String formatDef = trimmedLine.substring(7);
- if ( formatDef.equals(SSMConstants.CFG_FORMAT_PROPERTIES) || formatDef.startsWith(SSMConstants.CFG_FORMAT_PROPERTIES + " ")) {
- format = SSMConstants.CFG_FORMAT_PROPERTIES;
- } else if ( formatDef.equals(SSMConstants.CFG_FORMAT_FELIX_CA) || formatDef.startsWith(SSMConstants.CFG_FORMAT_FELIX_CA + " ")) {
- format = SSMConstants.CFG_FORMAT_FELIX_CA;
- } else {
- throw new IOException("Unknown configuration format: " + formatDef + " in line " + this.lineNumberReader.getLineNumber());
- }
- }
- final int factoryPos = params.indexOf('-');
- if ( factoryPos == -1 ) {
- config = new SSMConfiguration(params, null);
- } else {
- config = new SSMConfiguration(params.substring(pos + 1), params.substring(0, pos));
- }
- this.init(config);
- config.getProperties().put(SSMConstants.CFG_UNPROCESSED_FORMAT, format);
- feature.getConfigurations().add(config);
- configBuilder = new StringBuilder();
- mode = MODE.CONFIGURATION;
-
- } else if ( trimmedLine.startsWith("settings:") ) {
- checkConfig();
-
- if ( comment != null ) {
- throw new IOException("comment not allowed for settings in line " + this.lineNumberReader.getLineNumber());
- }
- if ( startLevel == null ) {
- throw new IOException("settings outside of feature/startlevel in line " + this.lineNumberReader.getLineNumber());
- }
- mode = MODE.SETTINGS;
-
- } else if ( trimmedLine.startsWith("artifact:") ) {
- checkConfig();
-
- if ( startLevel == null ) {
- throw new IOException("artifact outside of feature/startlevel in line " + this.lineNumberReader.getLineNumber());
- }
-
- mode = MODE.ARTIFACT;
- try {
- artifact = SSMArtifact.fromMvnUrl("mvn:" + params);
- } catch ( final IllegalArgumentException iae) {
- throw new IOException(iae.getMessage() + " in line " + this.lineNumberReader.getLineNumber(), iae);
- }
- this.init(artifact);
- startLevel.getArtifacts().add(artifact);
-
- } else {
- switch ( mode ) {
- case NONE: throw new IOException("No global contents allowed in line " + this.lineNumberReader.getLineNumber());
- case ARTIFACT : final String[] metadata = parseProperty(trimmedLine);
- artifact.getMetadata().put(metadata[0], metadata[1]);
- break;
- case VARS : final String[] vars = parseProperty(trimmedLine);
- model.getVariables().put(vars[0], vars[1]);
- break;
- case SETTINGS : final String[] settings = parseProperty(trimmedLine);
- feature.getSettings().put(settings[0], settings[1]);
- break;
- case FEATURE: throw new IOException("No contents allowed for feature in line " + this.lineNumberReader.getLineNumber());
- case START_LEVEL: throw new IOException("No contents allowed for feature in line " + this.lineNumberReader.getLineNumber());
- case CONFIGURATION: configBuilder.append(trimmedLine);
- configBuilder.append('\n');
- break;
- }
- }
- }
- checkConfig();
- if ( comment != null ) {
- throw new IOException("Comment not allowed at the end of file");
- }
-
- return model;
- }
-
- private void init(final SSMTraceable traceable) {
- traceable.setComment(this.comment);
- this.comment = null;
- final String number = String.valueOf(this.lineNumberReader.getLineNumber());
- if ( model.getLocation() != null ) {
- traceable.setLocation(model.getLocation() + ":" + number);
- } else {
- traceable.setLocation(number);
- }
- }
-
- private void checkConfig() {
- if ( config != null ) {
- config.getProperties().put(SSMConstants.CFG_UNPROCESSED, configBuilder.toString());
- }
- config = null;
- configBuilder = null;
- }
-
- private String[] parseProperty(final String line) throws IOException {
- final int equalsPos = line.indexOf('=');
- final String key = line.substring(0, equalsPos).trim();
- final String value = line.substring(equalsPos + 1).trim();
- if (key.isEmpty() || value.isEmpty() ) {
- throw new IOException("Invalid property; " + line + " in line " + this.lineNumberReader.getLineNumber());
- }
- return new String[] {key, value};
- }
-}
-
-
diff --git a/src/main/java/org/apache/sling/slingstart/model/txt/TXTSSMModelWriter.java b/src/main/java/org/apache/sling/slingstart/model/txt/TXTSSMModelWriter.java
deleted file mode 100644
index 12534c5..0000000
--- a/src/main/java/org/apache/sling/slingstart/model/txt/TXTSSMModelWriter.java
+++ /dev/null
@@ -1,203 +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.txt;
-
-import java.io.ByteArrayOutputStream;
-import java.io.IOException;
-import java.io.LineNumberReader;
-import java.io.PrintWriter;
-import java.io.StringReader;
-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.SSMConstants;
-import org.apache.sling.slingstart.model.SSMDeliverable;
-import org.apache.sling.slingstart.model.SSMFeature;
-import org.apache.sling.slingstart.model.SSMStartLevel;
-import org.apache.sling.slingstart.model.SSMTraceable;
-
-/**
- * Simple writer for the a model
- */
-public class TXTSSMModelWriter {
-
- private static void writeComment(final PrintWriter pw, final SSMTraceable traceable)
- throws IOException {
- if ( traceable.getComment() != null ) {
- final LineNumberReader lnr = new LineNumberReader(new StringReader(traceable.getComment()));
- try {
- String line = null;
- while ( (line = lnr.readLine()) != null ) {
- pw.print("# ");
- pw.println(line);
- }
- } finally {
- lnr.close();
- }
- }
- }
-
- /**
- * 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 model)
- throws IOException {
- final PrintWriter pw = new PrintWriter(writer);
-
- writeComment(pw, model);
- // variables
- if ( model.getVariables().size() > 0 ) {
- pw.println("variables:");
- for(final Map.Entry<String, String> entry : model.getVariables().entrySet()) {
- pw.print(" ");
- pw.print(entry.getKey());
- pw.print("=");
- pw.println(entry.getValue());
- }
- pw.println();
- }
-
- // features
- for(final SSMFeature feature : model.getFeatures()) {
- // skip empty feature
- if ( feature.getConfigurations().isEmpty() && feature.getSettings().isEmpty() ) {
- boolean hasArtifacts = false;
- for(final SSMStartLevel sl : feature.getStartLevels()) {
- if ( !sl.getArtifacts().isEmpty() ) {
- hasArtifacts = true;
- break;
- }
- }
- if ( !hasArtifacts ) {
- continue;
- }
- }
- writeComment(pw, feature);
- pw.print("feature:");
- final String[] runModes = feature.getRunModes();
- if ( runModes != null && runModes.length > 0 ) {
- pw.print(" ");
- boolean first = true;
- for(final String mode : runModes) {
- if ( first ) {
- first = false;
- } else {
- pw.print(",");
- }
- pw.print(mode);
- }
- }
- pw.println();
-
- // settings
- if ( feature.getSettings().size() > 0 ) {
- pw.println(" settings:");
-
- for(final Map.Entry<String, String> entry :feature.getSettings().entrySet()) {
- pw.print(" ");
- pw.print(entry.getKey());
- pw.print("=");
- pw.println(entry.getValue());
- }
- pw.println();
- }
-
- // start level
- for(final SSMStartLevel startLevel : feature.getStartLevels()) {
- // skip empty levels
- if ( startLevel.getArtifacts().size() == 0 ) {
- continue;
- }
- writeComment(pw, startLevel);
- pw.print(" startLevel: ");
- pw.print(String.valueOf(startLevel.getLevel()));
- pw.println();
- pw.println();
-
- // artifacts
- for(final SSMArtifact ad : startLevel.getArtifacts()) {
- writeComment(pw, ad);
- pw.print(" ");
- pw.print("artifact: ");
- pw.print(ad.toMvnUrl().substring(4));
- pw.println();
- if ( ad.getMetadata().size() > 0 ) {
- for(final Map.Entry<String, String> entry : ad.getMetadata().entrySet()) {
- pw.print(" ");
- pw.print(entry.getKey());
- pw.print("=");
- pw.println(entry.getValue());
- }
- }
- }
- if ( startLevel.getArtifacts().size() > 0 ) {
- pw.println();
- }
- }
-
- // configurations
- for(final SSMConfiguration config : feature.getConfigurations()) {
- writeComment(pw, config);
- final String raw = (String)config.getProperties().get(SSMConstants.CFG_UNPROCESSED);
- String format = (String)config.getProperties().get(SSMConstants.CFG_UNPROCESSED_FORMAT);
- if ( format == null ) {
- format = SSMConstants.CFG_FORMAT_FELIX_CA;
- }
- pw.print(" config:");
- if ( !SSMConstants.CFG_FORMAT_FELIX_CA.equals(format) ) {
- pw.print(format);
- }
- pw.print(" ");
- if ( config.getFactoryPid() != null ) {
- pw.print(config.getFactoryPid());
- pw.print("-");
- }
- pw.print(config.getPid());
- pw.println();
- final String configString;
- if ( raw != null ) {
- configString = raw;
- } else if ( config.isSpecial() ) {
- configString = config.getProperties().get(config.getPid()).toString();
- } else {
- final ByteArrayOutputStream os = new ByteArrayOutputStream();
- try {
- ConfigurationHandler.write(os , config.getProperties());
- } finally {
- os.close();
- }
- configString = new String(os.toByteArray(), "UTF-8");
- }
- // we have to read the configuration line by line to properly indent
- final LineNumberReader lnr = new LineNumberReader(new StringReader(configString));
- String line = null;
- while ((line = lnr.readLine()) != null ) {
- pw.print(" ");
- pw.println(line);
- }
- pw.println();
- }
- }
- }
-}
diff --git a/src/main/java/org/apache/sling/slingstart/model/txt/package-info.java b/src/main/java/org/apache/sling/slingstart/model/txt/package-info.java
deleted file mode 100644
index 5a2902a..0000000
--- a/src/main/java/org/apache/sling/slingstart/model/txt/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.txt;
-
-import aQute.bnd.annotation.Version;
-
--
To stop receiving notification emails like this one, please contact
"commits@sling.apache.org" <co...@sling.apache.org>.