blob: 1197f12a677dc9642ac4958b560b1cbfaaf8be20 [file] [log] [blame]
/*******************************************************************************
* Copyright (c) 2010-2011 Composent, Inc. and others. All rights reserved. This
* program and the accompanying materials are made available under the terms of
* the Eclipse Public License v1.0 which accompanies this distribution, and is
* available at http://www.eclipse.org/legal/epl-v10.html
*
* Contributors:
* Composent, Inc. - initial API and implementation
******************************************************************************/
package org.eclipse.ecf.osgi.services.remoteserviceadmin;
import java.io.IOException;
import java.io.InputStream;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import org.eclipse.ecf.internal.osgi.services.remoteserviceadmin.DebugOptions;
import org.eclipse.ecf.internal.osgi.services.remoteserviceadmin.EndpointDescriptionParser;
import org.eclipse.ecf.internal.osgi.services.remoteserviceadmin.LogUtility;
/**
* Default implementation of {@link IEndpointDescriptionReader}.
*
*/
public class EndpointDescriptionReader implements IEndpointDescriptionReader {
public org.osgi.service.remoteserviceadmin.EndpointDescription[] readEndpointDescriptions(
InputStream input) throws IOException {
// First create parser
EndpointDescriptionParser parser = new EndpointDescriptionParser();
// Parse input stream
parser.parse(input);
// Get possible endpoint descriptions
List<EndpointDescriptionParser.EndpointDescription> parsedDescriptions = parser
.getEndpointDescriptions();
List<org.osgi.service.remoteserviceadmin.EndpointDescription> results = new ArrayList<org.osgi.service.remoteserviceadmin.EndpointDescription>();
// For each one parsed, get properties and
for (EndpointDescriptionParser.EndpointDescription ed : parsedDescriptions) {
Map parsedProperties = ed.getProperties();
try {
results.add(new EndpointDescription(parsedProperties));
} catch (Exception e) {
LogUtility.logError(
"readEndpointDescriptions", //$NON-NLS-1$
DebugOptions.ENDPOINT_DESCRIPTION_READER,
this.getClass(),
"Exception parsing endpoint description properties", e); //$NON-NLS-1$
throw new IOException("Error creating endpoint description: " //$NON-NLS-1$
+ e.getMessage());
}
}
return results.toArray(new EndpointDescription[results.size()]);
}
}