use of org.openecard.addon.manifest.AddonSpecification in project open-ecard by ecsec.
the class AndroidMarshaller method parse.
private synchronized Object parse(XmlPullParser parser) throws XmlPullParserException, IOException, ParserConfigurationException, DatatypeConfigurationException {
if (parser.getName().equals("DestroyChannelResponse")) {
DestroyChannelResponse destroyChannelResponse = new DestroyChannelResponse();
int eventType;
do {
parser.next();
eventType = parser.getEventType();
if (eventType == XmlPullParser.START_TAG) {
if (parser.getName().equals("Profile")) {
destroyChannelResponse.setProfile(parser.nextText());
} else if (parser.getName().equals("RequestID")) {
destroyChannelResponse.setRequestID(parser.nextText());
} else if (parser.getName().equals("Result")) {
destroyChannelResponse.setResult(this.parseResult(parser));
}
}
} while (!(eventType == XmlPullParser.END_TAG && parser.getName().equals("DestroyChannelResponse")));
return destroyChannelResponse;
} else if (parser.getName().equals("DestroyChannel")) {
DestroyChannel destroyChannel = new DestroyChannel();
int eventType;
do {
parser.next();
eventType = parser.getEventType();
if (eventType == XmlPullParser.START_TAG) {
if (parser.getName().equals("SlotHandle")) {
destroyChannel.setSlotHandle(StringUtils.toByteArray(parser.nextText()));
}
}
} while (!(eventType == XmlPullParser.END_TAG && parser.getName().equals("DestroyChannel")));
return destroyChannel;
} else if (parser.getName().equals("EstablishChannelResponse")) {
EstablishChannelResponse establishChannelResponse = new EstablishChannelResponse();
int eventType;
do {
parser.next();
eventType = parser.getEventType();
if (eventType == XmlPullParser.START_TAG) {
if (parser.getName().equals("Profile")) {
establishChannelResponse.setProfile(parser.nextText());
} else if (parser.getName().equals("RequestID")) {
establishChannelResponse.setRequestID(parser.nextText());
} else if (parser.getName().equals("Result")) {
establishChannelResponse.setResult(this.parseResult(parser));
} else if (parser.getName().equals("AuthenticationProtocolData")) {
establishChannelResponse.setAuthenticationProtocolData(this.parseDIDAuthenticationDataType(parser));
}
}
} while (!(eventType == XmlPullParser.END_TAG && parser.getName().equals("EstablishChannelResponse")));
return establishChannelResponse;
} else if (parser.getName().equals("DIDAuthenticate")) {
DIDAuthenticate didAuthenticate = new DIDAuthenticate();
int eventType;
do {
parser.next();
eventType = parser.getEventType();
if (eventType == XmlPullParser.START_TAG) {
if (parser.getName().equals("DIDName")) {
didAuthenticate.setDIDName(parser.nextText());
} else if (parser.getName().equals("SlotHandle")) {
ConnectionHandleType cht = new ConnectionHandleType();
cht.setSlotHandle(StringUtils.toByteArray(parser.nextText()));
didAuthenticate.setConnectionHandle(cht);
} else if (parser.getName().equals("AuthenticationProtocolData")) {
didAuthenticate.setAuthenticationProtocolData(this.parseDIDAuthenticationDataType(parser));
}
}
} while (!(eventType == XmlPullParser.END_TAG && parser.getName().equals("DIDAuthenticate")));
return didAuthenticate;
} else if (parser.getName().equals("DIDAuthenticateResponse")) {
DIDAuthenticateResponse response = new DIDAuthenticateResponse();
int eventType;
do {
parser.next();
eventType = parser.getEventType();
if (eventType == XmlPullParser.START_TAG) {
if (parser.getName().equals("Result")) {
response.setResult(this.parseResult(parser));
}
if (parser.getName().equals("AuthenticationProtocolData")) {
response.setAuthenticationProtocolData(this.parseDIDAuthenticationDataType(parser));
}
}
} while (!(eventType == XmlPullParser.END_TAG && parser.getName().equals("DIDAuthenticateResponse")));
return response;
} else if (parser.getName().equals("StartPAOSResponse")) {
StartPAOSResponse startPAOSResponse = new StartPAOSResponse();
int eventType;
do {
parser.next();
eventType = parser.getEventType();
if (eventType == XmlPullParser.START_TAG) {
if (parser.getName().equals("Result")) {
startPAOSResponse.setResult(this.parseResult(parser));
}
}
} while (!(eventType == XmlPullParser.END_TAG && parser.getName().equals("StartPAOSResponse")));
return startPAOSResponse;
} else if (parser.getName().equals("InitializeFramework")) {
InitializeFramework initializeFramework = new InitializeFramework();
return initializeFramework;
} else if (parser.getName().equals("Conclusion")) {
return parseConclusion(parser);
} else if (parser.getName().equals("WaitResponse")) {
WaitResponse waitResponse = new WaitResponse();
int eventType;
do {
parser.next();
eventType = parser.getEventType();
if (eventType == XmlPullParser.START_TAG) {
if (parser.getName().equals("Result")) {
waitResponse.setResult(this.parseResult(parser));
} else if (parser.getName().equals("IFDEvent")) {
waitResponse.getIFDEvent().add(parseIFDStatusType(parser, "IFDEvent"));
} else if (parser.getName().equals("SessionIdentifier")) {
waitResponse.setSessionIdentifier(parser.nextText());
}
}
} while (!(eventType == XmlPullParser.END_TAG && parser.getName().equals("WaitResponse")));
return waitResponse;
} else if (parser.getName().equals("GetStatusResponse")) {
GetStatusResponse getStatusResponse = new GetStatusResponse();
int eventType;
do {
parser.next();
eventType = parser.getEventType();
if (eventType == XmlPullParser.START_TAG) {
if (parser.getName().equals("Result")) {
getStatusResponse.setResult(this.parseResult(parser));
} else if (parser.getName().equals("IFDStatus")) {
getStatusResponse.getIFDStatus().add(parseIFDStatusType(parser, "IFDStatus"));
}
}
} while (!(eventType == XmlPullParser.END_TAG && parser.getName().equals("GetStatusResponse")));
return getStatusResponse;
} else if (parser.getName().equals("ListIFDs")) {
ListIFDs listIFDs = new ListIFDs();
int eventType;
do {
parser.next();
eventType = parser.getEventType();
if (eventType == XmlPullParser.START_TAG) {
if (parser.getName().equals("ContextHandle")) {
listIFDs.setContextHandle(StringUtils.toByteArray(parser.nextText()));
}
}
} while (!(eventType == XmlPullParser.END_TAG && parser.getName().equals("ListIFDs")));
return listIFDs;
} else if (parser.getName().equals("GetIFDCapabilities")) {
GetIFDCapabilities getIFDCapabilities = new GetIFDCapabilities();
int eventType;
do {
parser.next();
eventType = parser.getEventType();
if (eventType == XmlPullParser.START_TAG) {
if (parser.getName().equals("ContextHandle")) {
getIFDCapabilities.setContextHandle(StringUtils.toByteArray(parser.nextText()));
} else if (parser.getName().equals("IFDName")) {
getIFDCapabilities.setIFDName(parser.nextText());
}
}
} while (!(eventType == XmlPullParser.END_TAG && parser.getName().equals("GetIFDCapabilities")));
return getIFDCapabilities;
} else if (parser.getName().equals("GetIFDCapabilitiesResponse")) {
GetIFDCapabilitiesResponse resp = new GetIFDCapabilitiesResponse();
int eventType;
do {
parser.next();
eventType = parser.getEventType();
if (eventType == XmlPullParser.START_TAG) {
if (parser.getName().equals("Profile")) {
resp.setProfile(parser.nextText());
} else if (parser.getName().equals("RequestID")) {
resp.setRequestID(parser.nextText());
} else if (parser.getName().equals("Result")) {
resp.setResult(this.parseResult(parser));
} else if (parser.getName().equals("GetIFDCapabilitiesResponse")) {
resp.setIFDCapabilities((IFDCapabilitiesType) this.parse(parser));
}
}
} while (!(eventType == XmlPullParser.END_TAG && parser.getName().equals("GetIFDCapabilitiesResponse")));
return resp;
} else if (parser.getName().equals("IFDCapabilitiesType")) {
IFDCapabilitiesType cap = new IFDCapabilitiesType();
int eventType;
do {
parser.next();
eventType = parser.getEventType();
if (eventType == XmlPullParser.START_TAG) {
if (parser.getName().equals("OpticalSignalUnit")) {
cap.setOpticalSignalUnit(Boolean.getBoolean(parser.nextText()));
} else if (parser.getName().equals("AcousticSignalUnit")) {
cap.setAcousticSignalUnit(Boolean.getBoolean(parser.nextText()));
} else if (parser.getName().equals("SlotCapability")) {
cap.getSlotCapability().add(parseSlotCapability(parser));
} else if (parser.getName().equals("DisplayCapability")) {
cap.getDisplayCapability().add(parseDisplayCapability(parser));
} else if (parser.getName().equals("KeyPadCapability")) {
cap.getKeyPadCapability().add(parseKeyPadCapability(parser));
} else if (parser.getName().equals("BioSensorCapability")) {
cap.getBioSensorCapability().add(parseBioSensorCapability(parser));
}
}
} while (!(eventType == XmlPullParser.END_TAG && parser.getName().equals("IFDCapabilitiesType")));
return cap;
} else if (parser.getName().equals("BeginTransaction")) {
BeginTransaction trans = new BeginTransaction();
int eventType;
do {
parser.next();
eventType = parser.getEventType();
if (eventType == XmlPullParser.START_TAG) {
if (parser.getName().equals("SlotHandle")) {
trans.setSlotHandle(StringUtils.toByteArray(parser.nextText()));
}
}
} while (!(eventType == XmlPullParser.END_TAG && parser.getName().equals("BeginTransaction")));
return trans;
} else if (parser.getName().equals("BeginTransactionResponse")) {
BeginTransactionResponse response = new BeginTransactionResponse();
int eventType;
do {
parser.next();
eventType = parser.getEventType();
if (eventType == XmlPullParser.START_TAG) {
if (parser.getName().equals("Profile")) {
response.setProfile(parser.nextText());
} else if (parser.getName().equals("RequestID")) {
response.setRequestID(parser.nextText());
} else if (parser.getName().equals("Result")) {
response.setResult(this.parseResult(parser));
}
}
} while (!(eventType == XmlPullParser.END_TAG && parser.getName().equals("BeginTransactionResponse")));
return response;
} else if (parser.getName().equals("EndTransaction")) {
EndTransaction end = new EndTransaction();
int eventType;
do {
parser.next();
eventType = parser.getEventType();
if (eventType == XmlPullParser.START_TAG) {
if (parser.getName().equals("SlotHandle")) {
end.setSlotHandle(StringUtils.toByteArray(parser.nextText()));
}
}
} while (!(eventType == XmlPullParser.END_TAG && parser.getName().equals("EndTransaction")));
return end;
} else if (parser.getName().equals("EndTransactionResponse")) {
EndTransactionResponse response = new EndTransactionResponse();
int eventType;
do {
parser.next();
eventType = parser.getEventType();
if (eventType == XmlPullParser.START_TAG) {
if (parser.getName().equals("Profile")) {
response.setProfile(parser.nextText());
} else if (parser.getName().equals("RequestID")) {
response.setRequestID(parser.nextText());
} else if (parser.getName().equals("Result")) {
response.setResult(this.parseResult(parser));
}
}
} while (!(eventType == XmlPullParser.END_TAG && parser.getName().equals("EndTransactionResponse")));
return response;
} else if (parser.getName().equals("CardApplicationPath")) {
CardApplicationPath path = new CardApplicationPath();
int eventType;
do {
parser.next();
eventType = parser.getEventType();
if (eventType == XmlPullParser.START_TAG) {
if (parser.getName().equals("CardAppPathRequest")) {
path.setCardAppPathRequest((CardApplicationPathType) parse(parser));
} else if (parser.getName().equals("Profile")) {
path.setProfile(parser.nextText());
} else if (parser.getName().equals("RequestID")) {
path.setRequestID(parser.nextText());
}
}
} while (!(eventType == XmlPullParser.END_TAG && parser.getName().equals("CardApplicationPath")));
return path;
} else if (parser.getName().equals("CardAppPathRequest") || parser.getName().equals("CardApplicationPathResult")) {
CardApplicationPathType type = new CardApplicationPathType();
int eventType;
do {
parser.next();
eventType = parser.getEventType();
if (eventType == XmlPullParser.START_TAG) {
if (parser.getName().equals("ChannelHandle")) {
type.setChannelHandle((ChannelHandleType) parse(parser));
} else if (parser.getName().equals("ContextHandle")) {
type.setContextHandle(StringUtils.toByteArray(parser.nextText()));
} else if (parser.getName().equals("IFDName")) {
type.setIFDName(parser.nextText());
} else if (parser.getName().equals("SlotIndex")) {
type.setSlotIndex(new BigInteger(parser.nextText()));
} else if (parser.getName().equals("CardApplication")) {
type.setCardApplication(StringUtils.toByteArray(parser.nextText()));
}
}
} while (!(eventType == XmlPullParser.END_TAG && parser.getName().equals("CardAppPathRequest")));
return type;
} else if (parser.getName().equals("ChannelHandle")) {
ChannelHandleType ch = new ChannelHandleType();
int eventType;
do {
parser.next();
eventType = parser.getEventType();
if (eventType == XmlPullParser.START_TAG) {
if (parser.getName().equals("ProtocolTerminationPoint")) {
ch.setProtocolTerminationPoint(parser.nextText());
} else if (parser.getName().equals("SessionIdentifier")) {
ch.setSessionIdentifier(parser.nextText());
} else if (parser.getName().equals("Binding")) {
ch.setBinding(parser.nextText());
} else if (parser.getName().equals("PathSecurity")) {
ch.setPathSecurity((PathSecurityType) parse(parser));
}
}
} while (!(eventType == XmlPullParser.END_TAG && parser.getName().equals("ChannelHandle")));
return ch;
} else if (parser.getName().equals("PathSecurity")) {
PathSecurityType p = new PathSecurityType();
int eventType;
do {
parser.next();
eventType = parser.getEventType();
if (eventType == XmlPullParser.START_TAG) {
if (parser.getName().equals("Protocol")) {
p.setProtocol(parser.nextText());
} else if (parser.getName().equals("Parameters")) {
// TODO this object is an any type
p.setParameters((Object) parse(parser));
}
}
} while (!(eventType == XmlPullParser.END_TAG && parser.getName().equals("PathSecurity")));
return p;
} else if (parser.getName().equals("CardApplicationPathResponse")) {
CardApplicationPathResponse resp = new CardApplicationPathResponse();
int eventType;
do {
parser.next();
eventType = parser.getEventType();
if (eventType == XmlPullParser.START_TAG) {
if (parser.getName().equals("CardAppPathResultSet")) {
resp.setCardAppPathResultSet((CardApplicationPathResponse.CardAppPathResultSet) parse(parser));
}
}
} while (!(eventType == XmlPullParser.END_TAG && parser.getName().equals("CardApplicationPathResponse")));
return resp;
} else if (parser.getName().equals("CardAppPathResultSet")) {
CardApplicationPathResponse.CardAppPathResultSet result = new CardApplicationPathResponse.CardAppPathResultSet();
int eventType;
do {
parser.next();
eventType = parser.getEventType();
if (eventType == XmlPullParser.START_TAG) {
if (parser.getName().equals("CardApplicationPathResult")) {
result.getCardApplicationPathResult().add((CardApplicationPathType) parse(parser));
}
}
} while (!(eventType == XmlPullParser.END_TAG && parser.getName().equals("CardAppPathResultSet")));
return result;
} else if (parser.getName().equals("CardApplicationConnect")) {
CardApplicationConnect result = new CardApplicationConnect();
int eventType;
do {
parser.next();
eventType = parser.getEventType();
if (eventType == XmlPullParser.START_TAG) {
if (parser.getName().equals("CardApplicationPath")) {
result.setCardApplicationPath(parseCardApplicationPath(parser));
} else if (parser.getName().equals("Output")) {
result.setOutput((OutputInfoType) parse(parser));
} else if (parser.getName().equals("ExclusiveUse")) {
result.setExclusiveUse(Boolean.getBoolean(parser.nextText()));
}
}
} while (!(eventType == XmlPullParser.END_TAG && parser.getName().equals("CardApplicationConnect")));
return result;
} else if (parser.getName().equals("Output")) {
OutputInfoType result = new OutputInfoType();
int eventType;
do {
parser.next();
eventType = parser.getEventType();
if (eventType == XmlPullParser.START_TAG) {
if (parser.getName().equals("Timeout")) {
result.setTimeout(new BigInteger(parser.nextText()));
} else if (parser.getName().equals("DisplayIndex")) {
result.setDisplayIndex(new BigInteger(parser.nextText()));
} else if (parser.getName().equals("Message")) {
result.setMessage(parser.nextText());
} else if (parser.getName().equals("AcousticalSignal")) {
result.setAcousticalSignal(Boolean.getBoolean(parser.nextText()));
} else if (parser.getName().equals("OpticalSignal")) {
result.setOpticalSignal(Boolean.getBoolean(parser.nextText()));
}
}
} while (!(eventType == XmlPullParser.END_TAG && parser.getName().equals("Output")));
return result;
} else if (parser.getName().equals("CardApplicationConnectResponse")) {
CardApplicationConnectResponse result = new CardApplicationConnectResponse();
int eventType;
do {
parser.next();
eventType = parser.getEventType();
if (eventType == XmlPullParser.START_TAG) {
if (parser.getName().equals("Profile")) {
result.setProfile(parser.nextText());
} else if (parser.getName().equals("RequestID")) {
result.setRequestID(parser.nextText());
} else if (parser.getName().equals("Result")) {
result.setResult(this.parseResult(parser));
} else if (parser.getName().equals("ConnectionHandle")) {
result.setConnectionHandle((ConnectionHandleType) parse(parser));
}
}
} while (!(eventType == XmlPullParser.END_TAG && parser.getName().equals("CardApplicationConnectResponse")));
return result;
} else if (parser.getName().equals("ConnectionHandle")) {
ConnectionHandleType result = new ConnectionHandleType();
int eventType;
do {
parser.next();
eventType = parser.getEventType();
if (eventType == XmlPullParser.START_TAG) {
if (parser.getName().equals("ChannelHandle")) {
result.setChannelHandle((ChannelHandleType) parse(parser));
} else if (parser.getName().equals("ContextHandle")) {
result.setContextHandle(StringUtils.toByteArray(parser.nextText()));
} else if (parser.getName().equals("IFDName")) {
result.setIFDName(parser.nextText());
} else if (parser.getName().equals("SlotIndex")) {
result.setSlotIndex(new BigInteger(parser.nextText()));
} else if (parser.getName().equals("CardApplication")) {
result.setCardApplication(StringUtils.toByteArray(parser.nextText()));
} else if (parser.getName().equals("SlotHandle")) {
result.setSlotHandle(StringUtils.toByteArray(parser.nextText()));
} else if (parser.getName().equals("RecognitionInfo")) {
result.setRecognitionInfo((RecognitionInfo) parse(parser));
} else if (parser.getName().equals("SlotInfo")) {
result.setSlotInfo((SlotInfo) parse(parser));
}
}
} while (!(eventType == XmlPullParser.END_TAG && parser.getName().equals("ConnectionHandle")));
return result;
} else if (parser.getName().equals("RecognitionInfo")) {
RecognitionInfo result = new RecognitionInfo();
int eventType;
do {
parser.next();
eventType = parser.getEventType();
if (eventType == XmlPullParser.START_TAG) {
if (parser.getName().equals("CardType")) {
result.setCardType(parser.nextText());
} else if (parser.getName().equals("CardIdentifier")) {
result.setCardIdentifier(StringUtils.toByteArray(parser.nextText()));
} else if (parser.getName().equals("CaptureTime")) {
// TODO
}
}
} while (!(eventType == XmlPullParser.END_TAG && parser.getName().equals("RecognitionInfo")));
return result;
} else if (parser.getName().equals("SlotInfo")) {
SlotInfo result = new SlotInfo();
int eventType;
do {
parser.next();
eventType = parser.getEventType();
if (eventType == XmlPullParser.START_TAG) {
if (parser.getName().equals("ProtectedAuthPath")) {
result.setProtectedAuthPath(Boolean.getBoolean(parser.nextText()));
}
}
} while (!(eventType == XmlPullParser.END_TAG && parser.getName().equals("SlotInfo")));
return result;
} else if (parser.getName().equals("CardApplicationDisconnect")) {
CardApplicationDisconnect result = new CardApplicationDisconnect();
int eventType;
do {
parser.next();
eventType = parser.getEventType();
if (eventType == XmlPullParser.START_TAG) {
if (parser.getName().equals("ConnectionHandle")) {
result.setConnectionHandle(parseConnectionHandle(parser));
} else if (parser.getName().equals("Action")) {
result.setAction(ActionType.fromValue(parser.nextText()));
} else if (parser.getName().equals("Profile")) {
result.setProfile(parser.nextText());
} else if (parser.getName().equals("RequestID")) {
result.setRequestID(parser.nextText());
}
}
} while (!(eventType == XmlPullParser.END_TAG && parser.getName().equals("CardApplicationDisconnect")));
return result;
} else if (parser.getName().equals("CardApplicationDisconnectResponse")) {
CardApplicationDisconnectResponse result = new CardApplicationDisconnectResponse();
int eventType;
do {
parser.next();
eventType = parser.getEventType();
if (eventType == XmlPullParser.START_TAG) {
if (parser.getName().equals("Profile")) {
result.setProfile(parser.nextText());
} else if (parser.getName().equals("RequestID")) {
result.setRequestID(parser.nextText());
} else if (parser.getName().equals("Result")) {
result.setResult(this.parseResult(parser));
}
}
} while (!(eventType == XmlPullParser.END_TAG && parser.getName().equals("CardApplicationDisconnectResponse")));
return result;
} else if (parser.getName().equals("GetRecognitionTreeResponse")) {
GetRecognitionTreeResponse resp = new GetRecognitionTreeResponse();
RecognitionTree recTree = new RecognitionTree();
int eventType;
do {
parser.next();
eventType = parser.getEventType();
if (eventType == XmlPullParser.START_TAG) {
if (parser.getName().equals("Result")) {
resp.setResult(this.parseResult(parser));
} else if (parser.getName().equals("CardCall")) {
recTree.getCardCall().add(this.parseCardCall(parser));
}
} else if (eventType == XmlPullParser.END_TAG) {
if (parser.getName().equals("CardCall")) {
}
}
} while (!(eventType == XmlPullParser.END_TAG && parser.getName().equals("GetRecognitionTreeResponse")));
resp.setRecognitionTree(recTree);
return resp;
} else if (parser.getName().equals("EstablishContext")) {
EstablishContext establishContext = new EstablishContext();
return establishContext;
} else if (parser.getName().equals("EstablishContextResponse")) {
EstablishContextResponse establishContextResponse = new EstablishContextResponse();
int eventType;
do {
parser.next();
eventType = parser.getEventType();
if (eventType == XmlPullParser.START_TAG) {
if (parser.getName().equals("Result")) {
establishContextResponse.setResult(this.parseResult(parser));
} else if (parser.getName().equals("ContextHandle")) {
establishContextResponse.setContextHandle(StringUtils.toByteArray(parser.nextText()));
}
}
} while (!(eventType == XmlPullParser.END_TAG && parser.getName().equals("EstablishContextResponse")));
return establishContextResponse;
} else if (parser.getName().equals("ListIFDsResponse")) {
ListIFDsResponse listIFDsResponse = new ListIFDsResponse();
int eventType;
do {
parser.next();
eventType = parser.getEventType();
if (eventType == XmlPullParser.START_TAG) {
if (parser.getName().equals("Result")) {
listIFDsResponse.setResult(this.parseResult(parser));
} else if (parser.getName().equals("IFDName")) {
listIFDsResponse.getIFDName().add(parser.nextText());
}
}
} while (!(eventType == XmlPullParser.END_TAG && parser.getName().equals("ListIFDsResponse")));
return listIFDsResponse;
} else if (parser.getName().equals("ConnectResponse")) {
ConnectResponse connectResponse = new ConnectResponse();
int eventType;
do {
parser.next();
eventType = parser.getEventType();
if (eventType == XmlPullParser.START_TAG) {
if (parser.getName().equals("Result")) {
connectResponse.setResult(this.parseResult(parser));
} else if (parser.getName().equals("SlotHandle")) {
connectResponse.setSlotHandle(StringUtils.toByteArray(parser.nextText()));
}
}
} while (!(eventType == XmlPullParser.END_TAG && parser.getName().equals("ConnectResponse")));
return connectResponse;
} else if (parser.getName().equals("Connect")) {
Connect c = new Connect();
int eventType;
do {
parser.next();
eventType = parser.getEventType();
if (eventType == XmlPullParser.START_TAG) {
if (parser.getName().equals("IFDName")) {
c.setIFDName(parser.nextText());
} else if (parser.getName().equals("ContextHandle")) {
c.setContextHandle(StringUtils.toByteArray(parser.nextText()));
} else if (parser.getName().equals("Slot")) {
c.setSlot(new BigInteger(parser.nextText()));
}
// TODO exclusive
}
} while (!(eventType == XmlPullParser.END_TAG && parser.getName().equals("Connect")));
return c;
} else if (parser.getName().equals("Disconnect")) {
Disconnect d = new Disconnect();
int eventType;
do {
parser.next();
eventType = parser.getEventType();
if (eventType == XmlPullParser.START_TAG) {
if (parser.getName().equals("SlotHandle")) {
d.setSlotHandle(StringUtils.toByteArray(parser.nextText()));
} else if (parser.getName().equals("Action")) {
d.setAction(ActionType.fromValue(parser.nextText()));
}
}
} while (!(eventType == XmlPullParser.END_TAG && parser.getName().equals("Disconnect")));
return d;
} else if (parser.getName().equals("DisconnectResponse")) {
DisconnectResponse response = new DisconnectResponse();
int eventType;
do {
parser.next();
eventType = parser.getEventType();
if (eventType == XmlPullParser.START_TAG) {
if (parser.getName().equals("Profile")) {
response.setProfile(parser.nextText());
} else if (parser.getName().equals("RequestID")) {
response.setRequestID(parser.nextText());
} else if (parser.getName().equals("Result")) {
response.setResult(this.parseResult(parser));
}
}
} while (!(eventType == XmlPullParser.END_TAG && parser.getName().equals("DisconnectResponse")));
return response;
} else if (parser.getName().equals("Transmit")) {
Transmit t = new Transmit();
int eventType;
do {
parser.next();
eventType = parser.getEventType();
if (eventType == XmlPullParser.START_TAG) {
if (parser.getName().equals("InputAPDUInfo")) {
t.getInputAPDUInfo().add(this.parseInputAPDUInfo(parser));
} else if (parser.getName().equals("SlotHandle")) {
t.setSlotHandle(StringUtils.toByteArray(parser.nextText()));
}
}
} while (!(eventType == XmlPullParser.END_TAG && parser.getName().equals("Transmit")));
return t;
} else if (parser.getName().equals("TransmitResponse")) {
TransmitResponse transmitResponse = new TransmitResponse();
int eventType;
do {
parser.next();
eventType = parser.getEventType();
if (eventType == XmlPullParser.START_TAG) {
if (parser.getName().equals("Result")) {
transmitResponse.setResult(this.parseResult(parser));
} else if (parser.getName().equals("OutputAPDU")) {
transmitResponse.getOutputAPDU().add(StringUtils.toByteArray(parser.nextText()));
}
}
} while (!(eventType == XmlPullParser.END_TAG && parser.getName().equals("TransmitResponse")));
return transmitResponse;
} else if (parser.getName().equals("CardInfo")) {
// TODO CardIdentification and CardCapabilities are ignored
CardInfo cardInfo = new CardInfo();
ApplicationCapabilitiesType applicationCapabilities = new ApplicationCapabilitiesType();
int eventType;
do {
parser.next();
eventType = parser.getEventType();
if (eventType == XmlPullParser.START_TAG) {
if (parser.getName().equals("ObjectIdentifier")) {
CardTypeType cardType = new CardTypeType();
cardType.setObjectIdentifier(parser.nextText());
cardInfo.setCardType(cardType);
} else if (parser.getName().equals("ImplicitlySelectedApplication")) {
try {
// TODO iso:Path, see CardInfo_ecard-AT_0-9-0
String selectedApplication = parser.nextText();
applicationCapabilities.setImplicitlySelectedApplication(StringUtils.toByteArray(selectedApplication));
} catch (XmlPullParserException ex) {
}
} else if (parser.getName().equals("CardApplication")) {
applicationCapabilities.getCardApplication().add(this.parseCardApplication(parser));
} else if (parser.getName().equals("CardTypeName")) {
InternationalStringType internationalString = new InternationalStringType();
String lang = parser.getAttributeValue("http://www.w3.org/XML/1998/namespace", "lang");
internationalString.setLang(lang);
internationalString.setValue(parser.nextText());
cardInfo.getCardType().getCardTypeName().add(internationalString);
} else if (parser.getName().equals("SpecificationBodyOrIssuer")) {
cardInfo.getCardType().setSpecificationBodyOrIssuer(parser.nextText());
} else if (parser.getName().equals("Status")) {
cardInfo.getCardType().setStatus(parser.nextText());
} else if (parser.getName().equals("Date")) {
// currently not working; see http://code.google.com/p/android/issues/detail?id=14379
/*String text = parser.nextText();
XMLGregorianCalendar date = DatatypeFactory.newInstance().newXMLGregorianCalendar(text);
cardInfo.getCardType().setDate(date);*/
} else if (parser.getName().equals("Version")) {
cardInfo.getCardType().setVersion(this.parseVersion(parser));
}
}
} while (!(eventType == XmlPullParser.END_TAG && parser.getName().equals("CardInfo")));
cardInfo.setApplicationCapabilities(applicationCapabilities);
return cardInfo;
} else if (parser.getName().equals("AddonSpecification")) {
AddonSpecification addonBundleDescription = new AddonSpecification();
int eventType;
do {
parser.next();
eventType = parser.getEventType();
if (eventType == XmlPullParser.START_TAG) {
if (parser.getName().equals("ID")) {
addonBundleDescription.setId(parser.nextText());
} else if (parser.getName().equals("Version")) {
addonBundleDescription.setVersion(parser.nextText());
} else if (parser.getName().equals("License")) {
addonBundleDescription.setLicense(parser.nextText());
} else if (parser.getName().equals("LocalizedName")) {
LocalizedString string = new LocalizedString();
string.setLang(parser.getAttributeValue("http://www.w3.org/XML/1998/namespace", "lang"));
string.setValue(parser.nextText());
addonBundleDescription.getLocalizedName().add(string);
} else if (parser.getName().equals("LocalizedDescription")) {
LocalizedString string = new LocalizedString();
string.setLang(parser.getAttributeValue("http://www.w3.org/XML/1998/namespace", "lang"));
string.setValue(parser.nextText());
addonBundleDescription.getLocalizedDescription().add(string);
} else if (parser.getName().equals("About")) {
LocalizedString string = new LocalizedString();
string.setLang(parser.getAttributeValue("http://www.w3.org/XML/1998/namespace", "lang"));
string.setValue(parser.nextText());
addonBundleDescription.getAbout().add(string);
} else if (parser.getName().equals("Logo")) {
addonBundleDescription.setLogo(parser.nextText());
} else if (parser.getName().equals("ConfigDescription")) {
addonBundleDescription.setConfigDescription(parseConfigDescription(parser));
} else if (parser.getName().equals("BindingActions")) {
addonBundleDescription.getBindingActions().addAll(parseBindingActions(parser));
} else if (parser.getName().equals("ApplicationActions")) {
addonBundleDescription.getApplicationActions().addAll(parseApplicationActions(parser));
} else if (parser.getName().equals("IFDActions")) {
addonBundleDescription.getIfdActions().addAll(parseProtocolPluginSpecification(parser, "IFDActions"));
} else if (parser.getName().equals("SALActions")) {
addonBundleDescription.getSalActions().addAll(parseProtocolPluginSpecification(parser, "SALActions"));
} else {
throw new IllegalArgumentException(parser.getName() + " in AddonSpecification is not supported.");
}
}
} while (!(eventType == XmlPullParser.END_TAG && parser.getName().equals("AddonSpecification")));
return addonBundleDescription;
} else if (parser.getName().equals("EstablishChannel")) {
EstablishChannel result = new EstablishChannel();
int eventType;
do {
parser.next();
eventType = parser.getEventType();
if (eventType == XmlPullParser.START_TAG) {
if (parser.getName().equals("SlotHandle")) {
result.setSlotHandle(StringUtils.toByteArray(parser.nextText()));
} else if (parser.getName().equals("AuthenticationProtocolData")) {
result.setAuthenticationProtocolData(parseDIDAuthenticationDataType(parser));
} else if (parser.getName().equals("Profile")) {
result.setProfile(parser.nextText());
} else if (parser.getName().equals("RequestID")) {
result.setRequestID(parser.nextText());
} else {
throw new IOException("Unmarshalling of " + parser.getName() + " in EstablishChannel not supported.");
}
}
} while (!(eventType == XmlPullParser.END_TAG && parser.getName().equals("EstablishChannel")));
return result;
} else {
throw new IOException("Unmarshalling of " + parser.getName() + " is not yet supported.");
}
}
use of org.openecard.addon.manifest.AddonSpecification in project open-ecard by ecsec.
the class AndroidMarshallerTest method testConversionOfAddonBundleDescription.
@Test
public void testConversionOfAddonBundleDescription() throws Exception {
WSMarshaller m = new AndroidMarshaller();
Object o = m.unmarshal(m.str2doc(TEST_ADDON_BUNDDLE_DESCRIPTION));
if (!(o instanceof AddonSpecification)) {
throw new Exception("Object should be an instace of AddonSpecification");
}
marshalLog(o);
}
use of org.openecard.addon.manifest.AddonSpecification in project open-ecard by ecsec.
the class ActivateAction method init.
@Override
public void init(Context ctx) {
tokenHandler = new TCTokenHandler(ctx);
this.ctx = ctx;
gui = ctx.getUserConsent();
dispatcher = ctx.getDispatcher();
manager = ctx.getManager();
settingsAndDefaultView = ctx.getViewController();
try {
AddonSpecification addonSpecStatus = manager.getRegistry().search("Status");
statusAction = manager.getAppPluginAction(addonSpecStatus, "getStatus");
AddonSpecification addonSpecPinMngmt = manager.getRegistry().search("PIN-Plugin");
pinManAction = manager.getAppExtensionAction(addonSpecPinMngmt, "GetCardsAndPINStatusAction");
} catch (AddonNotFoundException ex) {
// this should never happen because the status and pin plugin are always available
String msg = "Failed to get Status or PIN Plugin.";
LOG.error(msg, ex);
throw new RuntimeException(msg, ex);
}
}
use of org.openecard.addon.manifest.AddonSpecification in project open-ecard by ecsec.
the class FileRegistry method loadExistingAddons.
/**
* Register all add-ons which are already installed in the add-ons directory.
*
* @throws WSMarshallerException Thrown if the instantiation of the marshaler for the AddonSpecification marshaling
* failed.
*/
private void loadExistingAddons() throws WSMarshallerException {
try {
File addonsDir = FileUtils.getAddonsDir();
File[] addons = addonsDir.listFiles(new JARFileFilter());
addons = addons == null ? new File[0] : addons;
ManifestExtractor mEx = new ManifestExtractor();
for (File addon : addons) {
AddonSpecification addonSpec = mEx.getAddonSpecificationFromFile(addon);
if (addonSpec != null) {
register(addonSpec, addon);
logger.info("Loaded external addon {}", addon.getName());
}
}
} catch (IOException ex) {
logger.error("Failed to load addons directory.", ex);
} catch (SecurityException ex) {
logger.error("SecurityException seems like you don't have permissions to access the addons directory.", ex);
}
}
use of org.openecard.addon.manifest.AddonSpecification in project open-ecard by ecsec.
the class ManifestExtractor method getAddonSpecificationFromFile.
/**
* Get an AddonSpecification object from the jar file containing the addon.
*
* @param file jar file to get the AddonSpecification from.
* @return The {@link AddonSpecification} of the addon, or {@code null} if it could not be extracted.
*/
public AddonSpecification getAddonSpecificationFromFile(File file) {
String name = file.getName();
JarFile jarFile;
AddonSpecification abd;
try {
jarFile = new JarFile(file);
} catch (IOException e) {
logger.debug("File {} will not be registered as plugin because it's not a JarFile.", name);
return null;
}
try {
InputStream manifestStream = getPluginEntryClass(jarFile);
if (manifestStream == null) {
logger.debug("File {} will not be registered as plugin because it doesn't contain a addon.xml.", name);
return null;
} else {
marshaller.addXmlTypeClass(AddonSpecification.class);
Document manifestDoc = marshaller.str2doc(manifestStream);
abd = (AddonSpecification) marshaller.unmarshal(manifestDoc);
}
} catch (IOException | SAXException | WSMarshallerException ex) {
logger.error("Failed to process addon.xml entry for file " + name + ".", ex);
return null;
} finally {
try {
jarFile.close();
} catch (IOException ex) {
logger.error("Failed to close jar file.", ex);
}
}
return abd;
}
Aggregations