*/
package org.opendaylight.controller.configpusherfeature.internal;
+import com.google.common.base.Preconditions;
+import com.google.common.collect.ImmutableList;
+import com.google.common.collect.Iterables;
+import com.google.common.collect.Lists;
+
import java.io.File;
import java.nio.file.Path;
import java.nio.file.Paths;
import javax.xml.bind.JAXBContext;
import javax.xml.bind.JAXBException;
import javax.xml.bind.Unmarshaller;
+import javax.xml.stream.XMLInputFactory;
+import javax.xml.stream.XMLStreamException;
+import javax.xml.stream.XMLStreamReader;
+import javax.xml.transform.stream.StreamSource;
import org.apache.karaf.features.ConfigFileInfo;
import org.apache.karaf.features.Feature;
import org.opendaylight.controller.config.persist.api.ConfigSnapshotHolder;
import org.opendaylight.controller.config.persist.storage.file.xml.model.ConfigSnapshot;
-import com.google.common.base.Preconditions;
-import com.google.common.collect.ImmutableList;
-import com.google.common.collect.Iterables;
-import com.google.common.collect.Lists;
-
/*
* A ConfigSnapshotHolder that can track all the additional information
* relavent to the fact we are getting these from a Feature.
public class FeatureConfigSnapshotHolder implements ConfigSnapshotHolder {
private ConfigSnapshot unmarshalled = null;
private ConfigFileInfo fileInfo = null;
- private List<Feature> featureChain = new ArrayList<Feature>();
+ private List<Feature> featureChain = new ArrayList<>();
/*
* @param holder - FeatureConfigSnapshotHolder that we
* @param feature - new
*/
- public FeatureConfigSnapshotHolder(final FeatureConfigSnapshotHolder holder, final Feature feature) throws JAXBException {
- this(holder.fileInfo,holder.getFeature());
+ public FeatureConfigSnapshotHolder(final FeatureConfigSnapshotHolder holder,
+ final Feature feature) throws JAXBException, XMLStreamException {
+ this(holder.fileInfo, holder.getFeature());
this.featureChain.add(feature);
}
* @param fileInfo - ConfigFileInfo to read into the ConfigSnapshot
* @param feature - Feature the ConfigFileInfo was attached to
*/
- public FeatureConfigSnapshotHolder(final ConfigFileInfo fileInfo, final Feature feature) throws JAXBException {
+ public FeatureConfigSnapshotHolder(final ConfigFileInfo fileInfo,
+ final Feature feature) throws JAXBException, XMLStreamException {
Preconditions.checkNotNull(fileInfo);
Preconditions.checkNotNull(fileInfo.getFinalname());
Preconditions.checkNotNull(feature);
this.fileInfo = fileInfo;
this.featureChain.add(feature);
+ // TODO extract utility method for umarshalling config snapshots
JAXBContext jaxbContext = JAXBContext.newInstance(ConfigSnapshot.class);
Unmarshaller um = jaxbContext.createUnmarshaller();
- File file = new File(fileInfo.getFinalname());
- unmarshalled = ((ConfigSnapshot) um.unmarshal(file));
+ XMLInputFactory xif = XMLInputFactory.newFactory();
+ xif.setProperty(XMLInputFactory.IS_SUPPORTING_EXTERNAL_ENTITIES, false);
+ xif.setProperty(XMLInputFactory.SUPPORT_DTD, false);
+
+ XMLStreamReader xsr = xif.createXMLStreamReader(new StreamSource(new File(fileInfo.getFinalname())));
+ unmarshalled = (ConfigSnapshot) um.unmarshal(xsr);
}
+
/*
* (non-Javadoc)
* @see java.lang.Object#hashCode()
public int hashCode() {
final int prime = 31;
int result = 1;
- result = prime * result + ((unmarshalled != null && unmarshalled.getConfigSnapshot() == null) ? 0 : unmarshalled.getConfigSnapshot().hashCode());
+ result = prime * result + ((unmarshalled != null && unmarshalled.getConfigSnapshot() == null) ? 0 :
+ unmarshalled.getConfigSnapshot().hashCode());
return result;
}
+
/*
* (non-Javadoc)
* @see java.lang.Object#equals(java.lang.Object)
* We really care most about the underlying ConfigShapshot, so compute equality on that
*/
@Override
- public boolean equals(Object obj) {
+ public boolean equals(final Object obj) {
if (this == obj) {
return true;
}
if (getClass() != obj.getClass()) {
return false;
}
- FeatureConfigSnapshotHolder fcsh = (FeatureConfigSnapshotHolder)obj;
- if(this.unmarshalled.getConfigSnapshot().equals(fcsh.unmarshalled.getConfigSnapshot())) {
+ FeatureConfigSnapshotHolder fcsh = (FeatureConfigSnapshotHolder) obj;
+ if (this.unmarshalled.getConfigSnapshot().equals(fcsh.unmarshalled.getConfigSnapshot())) {
return true;
}
return false;
@Override
public String toString() {
- StringBuilder b = new StringBuilder();
- Path p = Paths.get(fileInfo.getFinalname());
- b.append(p.getFileName())
- .append("(")
- .append(getCauseFeature())
- .append(",")
- .append(getFeature())
- .append(")");
- return b.toString();
-
+ StringBuilder stringBuilder = new StringBuilder();
+ Path path = Paths.get(fileInfo.getFinalname());
+ stringBuilder.append(path.getFileName()).append("(").append(getCauseFeature()).append(",").append(getFeature())
+ .append(")");
+ return stringBuilder.toString();
}
@Override