Skip to main content
summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorslewis2010-12-20 05:18:43 +0000
committerslewis2010-12-20 05:18:43 +0000
commitc9969f1fd2af2de80dc2c4322f391ce605cb59c7 (patch)
treeee55528ddde302ed9a963aaad36958900fe75e1d /incubation
parent4e0ba21a69fec2189f16a7f83b79bd3eeb5910f1 (diff)
downloadorg.eclipse.ecf-c9969f1fd2af2de80dc2c4322f391ce605cb59c7.tar.gz
org.eclipse.ecf-c9969f1fd2af2de80dc2c4322f391ce605cb59c7.tar.xz
org.eclipse.ecf-c9969f1fd2af2de80dc2c4322f391ce605cb59c7.zip
changed IEndpointDescriptionWriter and added partial implementation
Diffstat (limited to 'incubation')
-rw-r--r--incubation/bundles/org.eclipse.ecf.osgi.services.remoteserviceadmin/src/org/eclipse/ecf/osgi/services/remoteserviceadmin/EndpointDescriptionWriter.java119
-rw-r--r--incubation/bundles/org.eclipse.ecf.osgi.services.remoteserviceadmin/src/org/eclipse/ecf/osgi/services/remoteserviceadmin/IEndpointDescriptionWriter.java4
2 files changed, 119 insertions, 4 deletions
diff --git a/incubation/bundles/org.eclipse.ecf.osgi.services.remoteserviceadmin/src/org/eclipse/ecf/osgi/services/remoteserviceadmin/EndpointDescriptionWriter.java b/incubation/bundles/org.eclipse.ecf.osgi.services.remoteserviceadmin/src/org/eclipse/ecf/osgi/services/remoteserviceadmin/EndpointDescriptionWriter.java
index e9a6ee60d..7e3f18c51 100644
--- a/incubation/bundles/org.eclipse.ecf.osgi.services.remoteserviceadmin/src/org/eclipse/ecf/osgi/services/remoteserviceadmin/EndpointDescriptionWriter.java
+++ b/incubation/bundles/org.eclipse.ecf.osgi.services.remoteserviceadmin/src/org/eclipse/ecf/osgi/services/remoteserviceadmin/EndpointDescriptionWriter.java
@@ -10,14 +10,129 @@
package org.eclipse.ecf.osgi.services.remoteserviceadmin;
import java.io.IOException;
-import java.io.OutputStream;
+import java.io.Writer;
+import java.util.Map;
public class EndpointDescriptionWriter implements IEndpointDescriptionWriter {
- public void writeEndpointDescriptions(OutputStream outs,
+ protected String indent = " ";
+
+ public void writeEndpointDescriptions(Writer writer,
EndpointDescription[] endpointDescriptions) throws IOException {
+
+ writeEndpointDescriptionsElementOpen(0, writer);
+ for (int i = 0; i < endpointDescriptions.length; i++) {
+ writeEndpointDescription(1, writer, endpointDescriptions[i]);
+ }
+ writeEndpointDescriptionsElementClose(0, writer);
+ }
+
+ private Writer newLine(Writer writer) throws IOException {
+ return writer.append("\n");
+ }
+
+ private Writer indent(int indentLevel, Writer writer) throws IOException {
+ for (int i = 0; i < indentLevel; i++)
+ writer.append(indent);
+ return writer;
+ }
+
+ private void writeEndpointDescription(int indentLevel, Writer writer,
+ EndpointDescription endpointDescription) throws IOException {
+ writeEndpointDescriptionElementOpen(indentLevel, writer);
+ writeProperties(indentLevel, writer, endpointDescription);
+ writeEndpointDescriptionElementClose(indentLevel, writer);
+ }
+
+ private void writeEndpointDescriptionElementClose(int indentLevel,
+ Writer writer) throws IOException {
+ indent(indentLevel, writer);
+ writer.append("</endpoint-description>");
+ newLine(writer);
+ }
+
+ private void writeProperties(int indentLevel, Writer writer,
+ EndpointDescription endpointDescription) throws IOException {
+ Map<String, Object> properties = endpointDescription.getProperties();
+ for (String name : properties.keySet())
+ writeProperty(indentLevel + 1, name, properties.get(name), writer);
+ }
+
+ private void writeProperty(int indentLevel, String name, Object value,
+ Writer writer) throws IOException {
+ if (value != null) {
+ String multiValueType = getMultiValueType(value);
+ if (multiValueType != null) {
+ writeMultiValueProperty(indentLevel, name, value, writer);
+ } else {
+ String valueType = getValueType(value);
+ writeValueProperty(indentLevel, name, valueType, value, writer);
+ }
+ }
+ }
+
+ private void writeValueProperty(int indentLevel, String name,
+ String valueType, Object value, Writer writer) throws IOException {
+ indent(indentLevel, writer);
+ writer.append("<property name=\"").append(name)
+ .append("\" value-type=\"").append(valueType)
+ .append("\" value=").append(value.toString()).append("\"/>");
+ newLine(writer);
+ }
+
+ private void writeMultiValueProperty(int indentLevel, String name,
+ Object value, Writer writer) {
+ // TODO Auto-generated method stub
+
+ }
+
+ private String getMultiValueType(Object value) {
// TODO Auto-generated method stub
+ return null;
+ }
+
+ private String getValueType(Object value) {
+ // first determine if is array
+ if (value instanceof String)
+ return "String";
+ else if (value instanceof Long)
+ return "Long";
+ else if (value instanceof Double)
+ return "Double";
+ else if (value instanceof Float)
+ return "Float";
+ else if (value instanceof Integer)
+ return "Integer";
+ else if (value instanceof Byte)
+ return "Byte";
+ else if (value instanceof Character)
+ return "Character";
+ else if (value instanceof Boolean)
+ return "Boolean";
+ else if (value instanceof Short)
+ return "Short";
+ return null;
+ }
+
+ private void writeEndpointDescriptionElementOpen(int indentLevel,
+ Writer writer) throws IOException {
+ indent(indentLevel, writer);
+ writer.append("<endpoint-description>");
+ newLine(writer);
+ }
+
+ private void writeEndpointDescriptionsElementClose(int indentLevel,
+ Writer writer) throws IOException {
+ indent(indentLevel, writer);
+ writer.append("<endpoint-descriptions xmlns=\"http://www.osgi.org/xmlns/rsa/v1.0.0\">");
+ newLine(writer);
+ }
+ private void writeEndpointDescriptionsElementOpen(int indentLevel,
+ Writer writer) throws IOException {
+ indent(indentLevel, writer);
+ writer.append("</endpoint-descriptions>");
+ newLine(writer);
}
}
diff --git a/incubation/bundles/org.eclipse.ecf.osgi.services.remoteserviceadmin/src/org/eclipse/ecf/osgi/services/remoteserviceadmin/IEndpointDescriptionWriter.java b/incubation/bundles/org.eclipse.ecf.osgi.services.remoteserviceadmin/src/org/eclipse/ecf/osgi/services/remoteserviceadmin/IEndpointDescriptionWriter.java
index 7c062dd28..442576677 100644
--- a/incubation/bundles/org.eclipse.ecf.osgi.services.remoteserviceadmin/src/org/eclipse/ecf/osgi/services/remoteserviceadmin/IEndpointDescriptionWriter.java
+++ b/incubation/bundles/org.eclipse.ecf.osgi.services.remoteserviceadmin/src/org/eclipse/ecf/osgi/services/remoteserviceadmin/IEndpointDescriptionWriter.java
@@ -10,11 +10,11 @@
package org.eclipse.ecf.osgi.services.remoteserviceadmin;
import java.io.IOException;
-import java.io.OutputStream;
+import java.io.Writer;
public interface IEndpointDescriptionWriter {
- public void writeEndpointDescriptions(OutputStream outs,
+ public void writeEndpointDescriptions(Writer writer,
EndpointDescription[] endpointDescriptions) throws IOException;
}

Back to the top