add files

This commit is contained in:
ChiKyun Kim
2025-09-09 13:59:12 +09:00
parent e94b06888d
commit 747aabe224
791 changed files with 3888723 additions and 0 deletions

View File

@@ -0,0 +1 @@
/target

View File

@@ -0,0 +1,23 @@
/*******************************************************************************
* The MIT License (MIT)
*
* Copyright (c) 2015-2017 V2G Clarity (Dr. Marc Mültin)
*
* Permission is hereby granted, free of charge, to any person obtaining a copy
* of this software and associated documentation files (the "Software"), to deal
* in the Software without restriction, including without limitation the rights
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
* copies of the Software, and to permit persons to whom the Software is
* furnished to do so, subject to the following conditions:
*
* The above copyright notice and this permission notice shall be included in
* all copies or substantial portions of the Software.
*
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
* THE SOFTWARE.
*******************************************************************************/

View File

@@ -0,0 +1,74 @@
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
<parent>
<groupId>com.v2gclarity.risev2g</groupId>
<artifactId>rise-v2g-parent</artifactId>
<version>1.2.6</version>
<relativePath>../RISE-V2G-PARENT</relativePath>
</parent>
<modelVersion>4.0.0</modelVersion>
<artifactId>rise-v2g-shared</artifactId>
<name>rise-v2g-shared</name>
<repositories>
<!-- OpenEXI jars deployed in the /repo folder of RISE-V2G-Shared.
See https://devcenter.heroku.com/articles/local-maven-dependencies for how to deploy .jars locally which are not
published in a public Maven repo. -->
<repository>
<id>project.local</id>
<name>project</name>
<url>file:${project.basedir}/repo</url>
</repository>
</repositories>
<dependencies>
<dependency>
<groupId>com.siemens.ct.exi</groupId>
<artifactId>exificient</artifactId>
<version>0.9.6</version>
</dependency>
<dependency>
<groupId>xerces</groupId>
<artifactId>xercesImpl</artifactId>
<version>2.12.2</version>
</dependency>
<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-api</artifactId>
<version>2.17.1</version>
</dependency>
<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-core</artifactId>
<version>2.17.1</version>
</dependency>
<dependency>
<groupId>net.sourceforge.openexi</groupId>
<artifactId>nagasena</artifactId>
<version>0000.0002.0052.0</version>
</dependency>
<dependency>
<groupId>net.sourceforge.openexi</groupId>
<artifactId>nagasena-rta</artifactId>
<version>0000.0002.0052.0</version>
</dependency>
<dependency>
<groupId>javax.xml.bind</groupId>
<artifactId>jaxb-api</artifactId>
<version>2.3.1</version>
</dependency>
<dependency>
<groupId>com.sun.xml.bind</groupId>
<artifactId>jaxb-core</artifactId>
<version>2.3.0</version>
</dependency>
<dependency>
<groupId>com.sun.xml.bind</groupId>
<artifactId>jaxb-impl</artifactId>
<version>2.3.5</version>
</dependency>
</dependencies>
</project>

View File

@@ -0,0 +1,8 @@
<?xml version="1.0" encoding="UTF-8"?>
<project xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd" xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<modelVersion>4.0.0</modelVersion>
<groupId>net.sourceforge.openexi</groupId>
<artifactId>nagasena-rta</artifactId>
<version>0000.0002.0052.0</version>
</project>

View File

@@ -0,0 +1,12 @@
<?xml version="1.0" encoding="UTF-8"?>
<metadata>
<groupId>net.sourceforge.openexi</groupId>
<artifactId>nagasena-rta</artifactId>
<versioning>
<release>0000.0002.0052.0</release>
<versions>
<version>0000.0002.0052.0</version>
</versions>
<lastUpdated>20171010062755</lastUpdated>
</versioning>
</metadata>

View File

@@ -0,0 +1 @@
5339d557de85298bce41835f018e1e24

View File

@@ -0,0 +1 @@
7a9eb14772b77dd0ad07f2eeb0edee95dafcb07a

View File

@@ -0,0 +1 @@
cca128e2267b20bf33224ad5174d2b413fa0b060

View File

@@ -0,0 +1,8 @@
<?xml version="1.0" encoding="UTF-8"?>
<project xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd" xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<modelVersion>4.0.0</modelVersion>
<groupId>net.sourceforge.openexi</groupId>
<artifactId>nagasena</artifactId>
<version>0000.0002.0052.0</version>
</project>

View File

@@ -0,0 +1 @@
31c8f0910b4f8878b02829081dc7d82fffb56552

View File

@@ -0,0 +1,12 @@
<?xml version="1.0" encoding="UTF-8"?>
<metadata>
<groupId>net.sourceforge.openexi</groupId>
<artifactId>nagasena</artifactId>
<versioning>
<release>0000.0002.0052.0</release>
<versions>
<version>0000.0002.0052.0</version>
</versions>
<lastUpdated>20171010062613</lastUpdated>
</versioning>
</metadata>

View File

@@ -0,0 +1 @@
952c9386ef2ffc7c0aa99760f0ce7d01

View File

@@ -0,0 +1 @@
46f716b6c62675ed9123ff435a642e3beac4c73a

View File

@@ -0,0 +1,42 @@
/*******************************************************************************
* The MIT License (MIT)
*
* Copyright (c) 2015 - 2019 Dr. Marc Mültin (V2G Clarity)
*
* Permission is hereby granted, free of charge, to any person obtaining a copy
* of this software and associated documentation files (the "Software"), to deal
* in the Software without restriction, including without limitation the rights
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
* copies of the Software, and to permit persons to whom the Software is
* furnished to do so, subject to the following conditions:
*
* The above copyright notice and this permission notice shall be included in
* all copies or substantial portions of the Software.
*
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
* THE SOFTWARE.
*******************************************************************************/
package com.v2gclarity.risev2g.shared.enumerations;
public enum CPStates {
STATE_A("State A"),
STATE_B("State B"),
STATE_C("State C"),
STATE_D("State D");
private final String value;
CPStates(String v) {
value = v;
}
public String value() {
return value;
}
}

View File

@@ -0,0 +1,33 @@
/*******************************************************************************
* The MIT License (MIT)
*
* Copyright (c) 2015 - 2019 Dr. Marc Mültin (V2G Clarity)
*
* Permission is hereby granted, free of charge, to any person obtaining a copy
* of this software and associated documentation files (the "Software"), to deal
* in the Software without restriction, including without limitation the rights
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
* copies of the Software, and to permit persons to whom the Software is
* furnished to do so, subject to the following conditions:
*
* The above copyright notice and this permission notice shall be included in
* all copies or substantial portions of the Software.
*
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
* THE SOFTWARE.
*******************************************************************************/
package com.v2gclarity.risev2g.shared.enumerations;
public enum GlobalTypes {
PAYLOAD_TYPE,
PROTOCOL_VERSION,
SECURITY,
TRANSPORT_PROTOCOL,
PORT,
PAYLOAD_LENGTH;
}

View File

@@ -0,0 +1,253 @@
/*******************************************************************************
* The MIT License (MIT)
*
* Copyright (c) 2015 - 2019 Dr. Marc Mültin (V2G Clarity)
*
* Permission is hereby granted, free of charge, to any person obtaining a copy
* of this software and associated documentation files (the "Software"), to deal
* in the Software without restriction, including without limitation the rights
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
* copies of the Software, and to permit persons to whom the Software is
* furnished to do so, subject to the following conditions:
*
* The above copyright notice and this permission notice shall be included in
* all copies or substantial portions of the Software.
*
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
* THE SOFTWARE.
*******************************************************************************/
package com.v2gclarity.risev2g.shared.enumerations;
import java.util.Arrays;
import com.v2gclarity.risev2g.shared.utils.ByteUtils;
public enum GlobalValues {
/* File paths to the configuration files for EVCC and SECC. It must be possible to modify them on the EV or charging station,
* which means that they must not be kept inside the JAR (which is read-only). We put those properties files at the same
* level as the JAR.
*/
EVCC_CONFIG_PROPERTIES_PATH("./EVCCConfig.properties"),
SECC_CONFIG_PROPERTIES_PATH("./SECCConfig.properties"),
/*
* TODO THIS IS NOT A SECURE WAY OF STORING A PASSWORD FOR THE CERTIFICATES' KEYS
* However, for testing purposes it is OK to use one passphrase for every key, certificate and
* keystore. This issue needs to be solved for productive use of this code.
*/
PASSPHRASE_FOR_CERTIFICATES_AND_KEYS("123456"),
// Aliases for contract certificate chain and OEM provisioning certificate chain
ALIAS_CONTRACT_CERTIFICATE("contract_cert"),
ALIAS_OEM_PROV_CERTIFICATE("oem_prov_cert"),
// Period of time in days in which contract certificate update is recommended
CERTIFICATE_EXPIRES_SOON_PERIOD((short) 21, GlobalTypes.SECURITY),
/*
* File path to the EVCC and SECC keystore and truststore.
* Since at least the evccKeystore needs to be modified upon certificate installation / update, the
* keystores must not be kept inside the JAR (which is read-only). For easier handling, we put all
* keystores at the same level as the JAR.
*/
EVCC_KEYSTORE_FILEPATH("./evccKeystore.jks"),
EVCC_TRUSTSTORE_FILEPATH("./evccTruststore.jks"),
SECC_KEYSTORE_FILEPATH("./seccKeystore.jks"),
SECC_TRUSTSTORE_FILEPATH("./seccTruststore.jks"),
// SECC Discovery Protocol (SDP) multicast address (see [V2G2-139]) and port (see table 15, page 36)
SDP_MULTICAST_ADDRESS("FF02::1"),
V2G_UDP_SDP_SERVER_PORT((short) 15118, GlobalTypes.PORT),
/*
* Maximum payload length allowed in bytes (0 ... 4294967295), see Table 9
* With Integer being a signed type in Java, we need to multiply the maximum value of Integer by 2
*/
V2GTP_HEADER_MAX_PAYLOAD_LENGTH((long) Integer.MAX_VALUE * 2, GlobalTypes.PAYLOAD_LENGTH),
// Protocol version of V2GTP messages (1 = IS compliant), see Table 9
V2GTP_VERSION_1_IS(ByteUtils.toByteFromHexString("01"), GlobalTypes.PROTOCOL_VERSION),
// Schema information
V2G_CI_MSG_DEF_NAMESPACE("urn:iso:15118:2:2013:MsgDef"),
V2G_CI_MSG_BODY_NAMESPACE("urn:iso:15118:2:2013:MsgBody"),
V2G_CI_MSG_DATATYPES_NAMESPACE("urn:iso:15118:2:2013:MsgDataTypes"),
V2G_CI_XMLDSIG_NAMESPACE("http://www.w3.org/2000/09/xmldsig#"),
SCHEMA_PATH_APP_PROTOCOL("/schemas/V2G_CI_AppProtocol.xsd"),
SCHEMA_PATH_MSG_DEF("/schemas/V2G_CI_MsgDef.xsd"),
SCHEMA_PATH_XMLDSIG("/schemas/xmldsig-core-schema.xsd"),
SCHEMA_PATH_MSG_BODY("/schemas/V2G_CI_MsgBody.xsd"),
SCHEMA_PATH_MSG_HEADER("/schemas/V2G_CI_MsgHeader.xsd"),
SCHEMA_PATH_MSG_DATA_TYPES("/schemas/V2G_CI_MsgDataTypes.xsd"),
// Encoding for the requested security option (see [V2G2-623])
V2G_SECURITY_WITH_TLS(ByteUtils.toByteFromHexString("00"), GlobalTypes.SECURITY),
V2G_SECURITY_WITHOUT_TLS(ByteUtils.toByteFromHexString("10"), GlobalTypes.SECURITY),
// Encoding for requested transport protocol (see [V2G2-623])
V2G_TRANSPORT_PROTOCOL_TCP(ByteUtils.toByteFromHexString("00"), GlobalTypes.TRANSPORT_PROTOCOL),
V2G_TRANSPORT_PROTOCOL_UDP(ByteUtils.toByteFromHexString("10"), GlobalTypes.TRANSPORT_PROTOCOL),
// Payload types
V2GTP_PAYLOAD_TYPE_EXI_ENCODED_V2G_MESSAGE(ByteUtils.toByteArrayFromHexString("8001"), GlobalTypes.PAYLOAD_TYPE),
V2GTP_PAYLOAD_TYPE_SDP_REQUEST_MESSAGE(ByteUtils.toByteArrayFromHexString("9000"), GlobalTypes.PAYLOAD_TYPE),
V2GTP_PAYLOAD_TYPE_SDP_RESPONSE_MESSAGE(ByteUtils.toByteArrayFromHexString("9001"), GlobalTypes.PAYLOAD_TYPE);
private GlobalTypes type;
private byte byteValue;
private byte[] byteArrayValue;
private short shortValue;
private long longValue;
private String stringValue;
private GlobalValues(byte byteValue, GlobalTypes type) {
this.byteValue = byteValue;
this.type = type;
}
private GlobalValues(byte[] byteArrayValue, GlobalTypes type) {
this.byteArrayValue = byteArrayValue;
this.type = type;
}
private GlobalValues(short shortValue, GlobalTypes type) {
this.shortValue = shortValue;
this.type = type;
}
private GlobalValues(long longValue, GlobalTypes type) {
this.longValue = longValue;
this.type = type;
}
private GlobalValues(String stringValue) {
this.stringValue = stringValue;
}
public byte getByteValue() {
return byteValue;
}
public byte[] getByteArrayValue() {
return byteArrayValue;
}
public long getLongValue() {
return longValue;
}
public short getShortValue() {
return shortValue;
}
@Override
public String toString() {
switch (this) {
case EVCC_CONFIG_PROPERTIES_PATH:
return stringValue;
case SECC_CONFIG_PROPERTIES_PATH:
return stringValue;
case PASSPHRASE_FOR_CERTIFICATES_AND_KEYS:
return stringValue;
case SDP_MULTICAST_ADDRESS:
return stringValue;
case V2G_UDP_SDP_SERVER_PORT:
return stringValue;
case V2GTP_HEADER_MAX_PAYLOAD_LENGTH:
return "4294967295 bytes";
case V2GTP_VERSION_1_IS:
return "version 1 (IS compliant)";
case V2G_CI_MSG_DEF_NAMESPACE:
return stringValue;
case V2G_CI_MSG_BODY_NAMESPACE:
return stringValue;
case V2G_CI_MSG_DATATYPES_NAMESPACE:
return stringValue;
case V2G_CI_XMLDSIG_NAMESPACE:
return stringValue;
case SCHEMA_PATH_APP_PROTOCOL:
return stringValue;
case SCHEMA_PATH_MSG_DEF:
return stringValue;
case SCHEMA_PATH_XMLDSIG:
return stringValue;
case SCHEMA_PATH_MSG_BODY:
return stringValue;
case SCHEMA_PATH_MSG_HEADER:
return stringValue;
case SCHEMA_PATH_MSG_DATA_TYPES:
return stringValue;
case V2G_SECURITY_WITH_TLS:
return "TLS enabled";
case V2G_SECURITY_WITHOUT_TLS:
return "TLS disabled";
case V2G_TRANSPORT_PROTOCOL_TCP:
return "transport protocol TCP";
case V2G_TRANSPORT_PROTOCOL_UDP:
return "transport protocol UDP";
case V2GTP_PAYLOAD_TYPE_EXI_ENCODED_V2G_MESSAGE:
return "EXI encoded Message";
case V2GTP_PAYLOAD_TYPE_SDP_REQUEST_MESSAGE:
return "SDP request message";
case V2GTP_PAYLOAD_TYPE_SDP_RESPONSE_MESSAGE:
return "SDP response message";
case ALIAS_CONTRACT_CERTIFICATE:
return stringValue;
case ALIAS_OEM_PROV_CERTIFICATE:
return stringValue;
case EVCC_KEYSTORE_FILEPATH:
return stringValue;
case EVCC_TRUSTSTORE_FILEPATH:
return stringValue;
case SECC_KEYSTORE_FILEPATH:
return stringValue;
case SECC_TRUSTSTORE_FILEPATH:
return stringValue;
case CERTIFICATE_EXPIRES_SOON_PERIOD:
return shortValue + " days";
default: return "Invalid GlobalValue type";
}
}
/*
* This method needs the second parameter from type GlobalTypes to distinguish between byte
* values which may be equal, e.g. TRANSPORT_PROTOCOL and SECURITY, which both may take values
* such as 0x00 or 0x01.
*/
public static String toString(byte[] globalValue, GlobalTypes globalType) {
String globalFound = "";
for (GlobalValues glValue : GlobalValues.values()) {
if (glValue.type == globalType && Arrays.equals(glValue.byteArrayValue, globalValue)) {
globalFound = glValue.toString();
break;
}
}
return globalFound;
}
/*
* This method needs the second parameter from type GlobalTypes to distinguish between byte array
* values which may be equal.
*/
public static String toString(byte globalValue, GlobalTypes globalType) {
String globalFound = "";
for (GlobalValues glValue : GlobalValues.values()) {
if (glValue.type == globalType && glValue.byteValue == globalValue) {
globalFound = glValue.toString();
break;
}
}
return globalFound;
}
}

View File

@@ -0,0 +1,31 @@
/*******************************************************************************
* The MIT License (MIT)
*
* Copyright (c) 2015 - 2019 Dr. Marc Mültin (V2G Clarity)
*
* Permission is hereby granted, free of charge, to any person obtaining a copy
* of this software and associated documentation files (the "Software"), to deal
* in the Software without restriction, including without limitation the rights
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
* copies of the Software, and to permit persons to whom the Software is
* furnished to do so, subject to the following conditions:
*
* The above copyright notice and this permission notice shall be included in
* all copies or substantial portions of the Software.
*
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
* THE SOFTWARE.
*******************************************************************************/
package com.v2gclarity.risev2g.shared.enumerations;
public enum MessageSets {
AC_CHARGING_EIM,
AC_CHARGING_PNC,
DC_CHARGING_EIM,
DC_CHARGING_PNC;
}

View File

@@ -0,0 +1,42 @@
/*******************************************************************************
* The MIT License (MIT)
*
* Copyright (c) 2015 - 2019 Dr. Marc Mültin (V2G Clarity)
*
* Permission is hereby granted, free of charge, to any person obtaining a copy
* of this software and associated documentation files (the "Software"), to deal
* in the Software without restriction, including without limitation the rights
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
* copies of the Software, and to permit persons to whom the Software is
* furnished to do so, subject to the following conditions:
*
* The above copyright notice and this permission notice shall be included in
* all copies or substantial portions of the Software.
*
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
* THE SOFTWARE.
*******************************************************************************/
package com.v2gclarity.risev2g.shared.enumerations;
public enum PKI {
CPS("CPS"),
CPO("CPO"),
OEM("OEM"),
MO("MO");
private final String value;
PKI(String v) {
value = v;
}
public String value() {
return value;
}
}

View File

@@ -0,0 +1,101 @@
/*******************************************************************************
* The MIT License (MIT)
*
* Copyright (c) 2015 - 2019 Dr. Marc Mültin (V2G Clarity)
*
* Permission is hereby granted, free of charge, to any person obtaining a copy
* of this software and associated documentation files (the "Software"), to deal
* in the Software without restriction, including without limitation the rights
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
* copies of the Software, and to permit persons to whom the Software is
* furnished to do so, subject to the following conditions:
*
* The above copyright notice and this permission notice shall be included in
* all copies or substantial portions of the Software.
*
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
* THE SOFTWARE.
*******************************************************************************/
package com.v2gclarity.risev2g.shared.enumerations;
public enum V2GMessages {
/*
* FORK does not represent a V2GMessage, but it is needed for the HashMap of
* V2GCommunicationSessionSECC/-EVCC which contains all states related to messages
*/
FORK("Fork"),
/*
* NONE does not represent a V2GMessage, but it is needed for signaling the termination of
* the state machine in the V2GCommunicationSessionSECC part (when calling getSendMessage() of State)
*/
NONE("None"),
SECC_DISCOVERY_REQ("SECCDiscoveryReq"),
SECC_DISCOVERY_RES("SECCDiscoveryRes"),
SUPPORTED_APP_PROTOCOL_REQ("SupportedAppProtocolReq"),
SUPPORTED_APP_PROTOCOL_RES("SupportedAppProtocolRes"),
SESSION_SETUP_REQ("SessionSetupReqType"),
SESSION_SETUP_RES("SessionSetupResType"),
SERVICE_DISCOVERY_REQ("ServiceDiscoveryReqType"),
SERVICE_DISCOVERY_RES("ServiceDiscoveryResType"),
SERVICE_DETAIL_REQ("ServiceDetailReqType"),
SERVICE_DETAIL_RES("ServiceDetailResType"),
PAYMENT_SERVICE_SELECTION_REQ("PaymentServiceSelectionReqType"),
PAYMENT_SERVICE_SELECTION_RES("PaymentServiceSelectionResType"),
PAYMENT_DETAILS_REQ("PaymentDetailsReqType"),
PAYMENT_DETAILS_RES("PaymentDetailsResType"),
AUTHORIZATION_REQ("AuthorizationReqType"),
AUTHORIZATION_RES("AuthorizationResType"),
CHARGE_PARAMETER_DISCOVERY_REQ("ChargeParameterDiscoveryReqType"),
CHARGE_PARAMETER_DISCOVERY_RES("ChargeParameterDiscoveryResType"),
CHARGING_STATUS_REQ("ChargingStatusReqType"),
CHARGING_STATUS_RES("ChargingStatusResType"),
METERING_RECEIPT_REQ("MeteringReceiptReqType"),
METERING_RECEIPT_RES("MeteringReceiptResType"),
POWER_DELIVERY_REQ("PowerDeliveryReqType"),
POWER_DELIVERY_RES("PowerDeliveryResType"),
CABLE_CHECK_REQ("CableCheckReqType"),
CABLE_CHECK_RES("CableCheckResType"),
PRE_CHARGE_REQ("PreChargeReqType"),
PRE_CHARGE_RES("PreChargeResType"),
CURRENT_DEMAND_REQ("CurrentDemandReqType"),
CURRENT_DEMAND_RES("CurrentDemandResType"),
WELDING_DETECTION_REQ("WeldingDetectionReqType"),
WELDING_DETECTION_RES("WeldingDetectionResType"),
SESSION_STOP_REQ("SessionStopReqType"),
SESSION_STOP_RES("SessionStopResType"),
CERTIFICATE_INSTALLATION_REQ("CertificateInstallationReqType"),
CERTIFICATE_INSTALLATION_RES("CertificateInstallationResType"),
CERTIFICATE_UPDATE_REQ("CertificateUpdateReqType"),
CERTIFICATE_UPDATE_RES("CertificateUpdateResType");
/*
* the String value must be the same as the class names in package shared.v2gMessages.msgbody and
* shared.v2gMessages.appprotocol
*/
private final String value;
V2GMessages(String v) {
value = v;
}
public String value() {
return value;
}
public static V2GMessages fromValue(String v) {
for (V2GMessages v2gMessage: V2GMessages.values()) {
if (v2gMessage.value.equals(v)) {
return v2gMessage;
}
}
throw new IllegalArgumentException(v);
}
}

View File

@@ -0,0 +1,57 @@
/*******************************************************************************
* The MIT License (MIT)
*
* Copyright (c) 2015 - 2019 Dr. Marc Mültin (V2G Clarity)
*
* Permission is hereby granted, free of charge, to any person obtaining a copy
* of this software and associated documentation files (the "Software"), to deal
* in the Software without restriction, including without limitation the rights
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
* copies of the Software, and to permit persons to whom the Software is
* furnished to do so, subject to the following conditions:
*
* The above copyright notice and this permission notice shall be included in
* all copies or substantial portions of the Software.
*
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
* THE SOFTWARE.
*******************************************************************************/
package com.v2gclarity.risev2g.shared.exiCodec;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
import org.openexi.scomp.EXISchemaFactoryErrorHandler;
import org.openexi.scomp.EXISchemaFactoryException;
public class EXISchemaFactoryExceptionHandler implements EXISchemaFactoryErrorHandler {
private Logger logger = LogManager.getLogger(this.getClass().getSimpleName());
public EXISchemaFactoryExceptionHandler() {
super();
}
@Override
public void warning(EXISchemaFactoryException eXISchemaFactoryException) throws EXISchemaFactoryException {
logger.warn("WARN:");
eXISchemaFactoryException.printStackTrace();
}
@Override
public void error(EXISchemaFactoryException eXISchemaFactoryException) throws EXISchemaFactoryException {
logger.warn("ERROR:");
eXISchemaFactoryException.printStackTrace();
}
@Override
public void fatalError(EXISchemaFactoryException eXISchemaFactoryException) throws EXISchemaFactoryException {
logger.warn("FATAL:");
eXISchemaFactoryException.getStackTrace();
}
}

View File

@@ -0,0 +1,238 @@
package com.v2gclarity.risev2g.shared.exiCodec;
/*******************************************************************************
* The MIT License (MIT)
*
* Copyright (c) 2015 - 2019 Dr. Marc Mültin (V2G Clarity)
*
* Permission is hereby granted, free of charge, to any person obtaining a copy
* of this software and associated documentation files (the "Software"), to deal
* in the Software without restriction, including without limitation the rights
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
* copies of the Software, and to permit persons to whom the Software is
* furnished to do so, subject to the following conditions:
*
* The above copyright notice and this permission notice shall be included in
* all copies or substantial portions of the Software.
*
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
* THE SOFTWARE.
*******************************************************************************/
import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.io.StringWriter;
import javax.xml.transform.Transformer;
import javax.xml.transform.TransformerConfigurationException;
import javax.xml.transform.TransformerException;
import javax.xml.transform.TransformerFactory;
import javax.xml.transform.sax.SAXSource;
import javax.xml.transform.stream.StreamResult;
import org.xml.sax.InputSource;
import org.xml.sax.SAXException;
import org.xml.sax.XMLReader;
import org.xml.sax.helpers.XMLReaderFactory;
import com.siemens.ct.exi.EXIFactory;
import com.siemens.ct.exi.GrammarFactory;
import com.siemens.ct.exi.api.sax.EXIResult;
import com.siemens.ct.exi.api.sax.EXISource;
import com.siemens.ct.exi.exceptions.EXIException;
import com.siemens.ct.exi.grammars.Grammars;
import com.siemens.ct.exi.helpers.DefaultEXIFactory;
import com.v2gclarity.risev2g.shared.enumerations.GlobalValues;
import com.v2gclarity.risev2g.shared.utils.ByteUtils;
public final class EXIficientCodec extends ExiCodec {
// -- BEGIN: SINGLETON DEFINITION --
/*
* Eager instantiation of the singleton, since a EXIficientCodec is always needed.
* The JVM creates the unique instance when the class is loaded and before any thread tries to
* access the instance variable -> thread safe.
*/
private static final EXIficientCodec instance = new EXIficientCodec();
private EXIFactory exiFactory;
private GrammarFactory grammarFactory;
private Grammars grammarAppProtocol;
private Grammars grammarMsgDef;
private Grammars grammarXMLDSig;
private OutputStream encodeOS;
private EXIficientCodec() {
super();
setExiFactory(DefaultEXIFactory.newInstance());
setGrammarFactory(GrammarFactory.newInstance());
/*
* The Java classes
* - EXIficient_V2G_CI_AppProtocol,
* - EXIficient_V2G_CI_MsgDef, and
* - EXIficient_xmldsig_core_schema
* are serialized versions of the respective XSD schema files.
* These serializations have been created using a tool available at
* https://github.com/EXIficient/exificient-grammars/blob/master/src/main/java/com/siemens/ct/exi/grammars/persistency/Grammars2JavaSourceCode.java
*/
setGrammarAppProtocol(new EXIficient_V2G_CI_AppProtocol());
setGrammarMsgDef(new EXIficient_V2G_CI_MsgDef());
setGrammarXMLDSig(new EXIficient_xmldsig_core_schema());
// Non-default settings to fulfill requirements [V2G2-099] and [V2G2-600]
getExiFactory().setValuePartitionCapacity(0);
getExiFactory().setMaximumNumberOfBuiltInElementGrammars(0);
getExiFactory().setMaximumNumberOfBuiltInProductions(0);
}
public static EXIficientCodec getInstance() {
return instance;
}
// -- END: SINGLETON DEFINITION --
@Override
public synchronized byte[] encodeEXI(Object jaxbObject, String xsdSchemaPath) {
Grammars grammar = null;
if (xsdSchemaPath.equals(GlobalValues.SCHEMA_PATH_APP_PROTOCOL.toString()))
grammar = getGrammarAppProtocol();
else if (xsdSchemaPath.equals(GlobalValues.SCHEMA_PATH_MSG_DEF.toString()))
grammar = getGrammarMsgDef();
else if (xsdSchemaPath.equals(GlobalValues.SCHEMA_PATH_XMLDSIG.toString()))
grammar = getGrammarXMLDSig();
else {
getLogger().error("False schema path provided for encoding jaxbObject into EXI");
return null;
}
InputStream inStream = marshalToInputStream(jaxbObject);
ByteArrayOutputStream baos = new ByteArrayOutputStream();
baos = ((ByteArrayOutputStream) encode(inStream, grammar));
if (isHexAndBase64MsgRepresentation())
showHexAndBase64RepresentationOfMessage(jaxbObject, baos.toByteArray());
return baos.toByteArray();
}
private synchronized OutputStream encode(InputStream jaxbXML, Grammars grammar) {
EXIResult exiResult = null;
try {
exiFactory.setGrammars(grammar);
encodeOS = new ByteArrayOutputStream();
exiResult = new EXIResult(exiFactory);
exiResult.setOutputStream(encodeOS);
XMLReader xmlReader = XMLReaderFactory.createXMLReader();
xmlReader.setContentHandler(exiResult.getHandler());
// parse xml file
xmlReader.parse(new InputSource(jaxbXML));
encodeOS.close();
} catch (SAXException | IOException | EXIException e) {
getLogger().error(e.getClass().getSimpleName() + " occurred while trying to encode", e);
}
return encodeOS;
}
@Override
public synchronized Object decodeEXI(byte[] exiEncodedMessage, boolean supportedAppProtocolHandshake) {
getLogger().debug("Received EXI stream: " + ByteUtils.toHexString(exiEncodedMessage));
ByteArrayInputStream bais = new ByteArrayInputStream(exiEncodedMessage);
setDecodedExi(decode(bais, supportedAppProtocolHandshake));
return unmarshallToMessage(getDecodedExi());
}
private synchronized String decode(InputStream exiInputStream, boolean supportedAppProtocolHandshake) {
TransformerFactory tf = TransformerFactory.newInstance();
Transformer transformer = null;
StringWriter stringWriter = new StringWriter();
try {
transformer = tf.newTransformer();
} catch (TransformerConfigurationException e) {
getLogger().error("Error occurred while trying to decode (TransformerConfigurationException)", e);
}
if (supportedAppProtocolHandshake) exiFactory.setGrammars(grammarAppProtocol);
else exiFactory.setGrammars(grammarMsgDef);
try {
EXISource saxSource = new EXISource(exiFactory);
SAXSource exiSource = new SAXSource(new InputSource(exiInputStream));
XMLReader exiReader = saxSource.getXMLReader();
exiSource.setXMLReader(exiReader);
transformer.transform(exiSource, new StreamResult(stringWriter));
} catch (EXIException e) {
getLogger().error("Error occurred while trying to decode (EXIException)", e);
} catch (TransformerException e) {
getLogger().error("Error occurred while trying to decode (TransformerException)", e);
}
return stringWriter.toString();
}
private Grammars getGrammarAppProtocol() {
return grammarAppProtocol;
}
private void setGrammarAppProtocol(Grammars grammarAppProtocol) {
this.grammarAppProtocol = grammarAppProtocol;
}
private Grammars getGrammarMsgDef() {
return grammarMsgDef;
}
private void setGrammarMsgDef(Grammars grammarMsgDef) {
this.grammarMsgDef = grammarMsgDef;
}
public Grammars getGrammarXMLDSig() {
return grammarXMLDSig;
}
public void setGrammarXMLDSig(Grammars grammarXMLDSig) {
this.grammarXMLDSig = grammarXMLDSig;
}
public EXIFactory getExiFactory() {
return exiFactory;
}
private void setExiFactory(EXIFactory exiFactory) {
this.exiFactory = exiFactory;
}
@SuppressWarnings("unused")
private GrammarFactory getGrammarFactory() {
return grammarFactory;
}
private void setGrammarFactory(GrammarFactory grammarFactory) {
this.grammarFactory = grammarFactory;
}
@Override
public void setFragment(boolean useFragmentGrammar) {
getExiFactory().setFragment(useFragmentGrammar);
}
}

View File

@@ -0,0 +1,507 @@
/*******************************************************************************
* The MIT License (MIT)
*
* Copyright (c) 2015 - 2019 Dr. Marc Mültin (V2G Clarity)
*
* Permission is hereby granted, free of charge, to any person obtaining a copy
* of this software and associated documentation files (the "Software"), to deal
* in the Software without restriction, including without limitation the rights
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
* copies of the Software, and to permit persons to whom the Software is
* furnished to do so, subject to the following conditions:
*
* The above copyright notice and this permission notice shall be included in
* all copies or substantial portions of the Software.
*
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
* THE SOFTWARE.
*******************************************************************************/
package com.v2gclarity.risev2g.shared.exiCodec;
import javax.xml.namespace.QName;
import com.siemens.ct.exi.context.GrammarContext;
import com.siemens.ct.exi.context.GrammarUriContext;
import com.siemens.ct.exi.context.QNameContext;
import com.siemens.ct.exi.exceptions.UnsupportedOption;
import com.siemens.ct.exi.grammars.Grammars;
import com.siemens.ct.exi.grammars.event.EndDocument;
import com.siemens.ct.exi.grammars.event.Event;
import com.siemens.ct.exi.grammars.event.StartDocument;
import com.siemens.ct.exi.grammars.event.StartElement;
import com.siemens.ct.exi.grammars.grammar.DocEnd;
import com.siemens.ct.exi.grammars.grammar.Document;
import com.siemens.ct.exi.grammars.grammar.Fragment;
import com.siemens.ct.exi.grammars.grammar.Grammar;
import com.siemens.ct.exi.grammars.grammar.SchemaInformedDocContent;
import com.siemens.ct.exi.grammars.grammar.SchemaInformedFirstStartTagGrammar;
@SuppressWarnings("unused")
public class EXIficient_V2G_CI_AppProtocol implements Grammars {
/* BEGIN GrammarContext ----- */
final String ns0 = "";
final QNameContext qnc0 = new QNameContext(0, 0, new QName(ns0, "AppProtocol"));
final QNameContext qnc1 = new QNameContext(0, 1, new QName(ns0, "Priority"));
final QNameContext qnc2 = new QNameContext(0, 2, new QName(ns0, "ProtocolNamespace"));
final QNameContext qnc3 = new QNameContext(0, 3, new QName(ns0, "ResponseCode"));
final QNameContext qnc4 = new QNameContext(0, 4, new QName(ns0, "SchemaID"));
final QNameContext qnc5 = new QNameContext(0, 5, new QName(ns0, "VersionNumberMajor"));
final QNameContext qnc6 = new QNameContext(0, 6, new QName(ns0, "VersionNumberMinor"));
final QNameContext[] grammarQNames0 = {qnc0, qnc1, qnc2, qnc3, qnc4, qnc5, qnc6};
final String[] grammarPrefixes0 = {""};
final GrammarUriContext guc0 = new GrammarUriContext(0, ns0, grammarQNames0, grammarPrefixes0);
final String ns1 = "http://www.w3.org/XML/1998/namespace";
final QNameContext qnc7 = new QNameContext(1, 0, new QName(ns1, "base"));
final QNameContext qnc8 = new QNameContext(1, 1, new QName(ns1, "id"));
final QNameContext qnc9 = new QNameContext(1, 2, new QName(ns1, "lang"));
final QNameContext qnc10 = new QNameContext(1, 3, new QName(ns1, "space"));
final QNameContext[] grammarQNames1 = {qnc7, qnc8, qnc9, qnc10};
final String[] grammarPrefixes1 = {"xml"};
final GrammarUriContext guc1 = new GrammarUriContext(1, ns1, grammarQNames1, grammarPrefixes1);
final String ns2 = "http://www.w3.org/2001/XMLSchema-instance";
final QNameContext qnc11 = new QNameContext(2, 0, new QName(ns2, "nil"));
final QNameContext qnc12 = new QNameContext(2, 1, new QName(ns2, "type"));
final QNameContext[] grammarQNames2 = {qnc11, qnc12};
final String[] grammarPrefixes2 = {"xsi"};
final GrammarUriContext guc2 = new GrammarUriContext(2, ns2, grammarQNames2, grammarPrefixes2);
final String ns3 = "http://www.w3.org/2001/XMLSchema";
final QNameContext qnc13 = new QNameContext(3, 0, new QName(ns3, "ENTITIES"));
final QNameContext qnc14 = new QNameContext(3, 1, new QName(ns3, "ENTITY"));
final QNameContext qnc15 = new QNameContext(3, 2, new QName(ns3, "ID"));
final QNameContext qnc16 = new QNameContext(3, 3, new QName(ns3, "IDREF"));
final QNameContext qnc17 = new QNameContext(3, 4, new QName(ns3, "IDREFS"));
final QNameContext qnc18 = new QNameContext(3, 5, new QName(ns3, "NCName"));
final QNameContext qnc19 = new QNameContext(3, 6, new QName(ns3, "NMTOKEN"));
final QNameContext qnc20 = new QNameContext(3, 7, new QName(ns3, "NMTOKENS"));
final QNameContext qnc21 = new QNameContext(3, 8, new QName(ns3, "NOTATION"));
final QNameContext qnc22 = new QNameContext(3, 9, new QName(ns3, "Name"));
final QNameContext qnc23 = new QNameContext(3, 10, new QName(ns3, "QName"));
final QNameContext qnc24 = new QNameContext(3, 11, new QName(ns3, "anySimpleType"));
final QNameContext qnc25 = new QNameContext(3, 12, new QName(ns3, "anyType"));
final QNameContext qnc26 = new QNameContext(3, 13, new QName(ns3, "anyURI"));
final QNameContext qnc27 = new QNameContext(3, 14, new QName(ns3, "base64Binary"));
final QNameContext qnc28 = new QNameContext(3, 15, new QName(ns3, "boolean"));
final QNameContext qnc29 = new QNameContext(3, 16, new QName(ns3, "byte"));
final QNameContext qnc30 = new QNameContext(3, 17, new QName(ns3, "date"));
final QNameContext qnc31 = new QNameContext(3, 18, new QName(ns3, "dateTime"));
final QNameContext qnc32 = new QNameContext(3, 19, new QName(ns3, "decimal"));
final QNameContext qnc33 = new QNameContext(3, 20, new QName(ns3, "double"));
final QNameContext qnc34 = new QNameContext(3, 21, new QName(ns3, "duration"));
final QNameContext qnc35 = new QNameContext(3, 22, new QName(ns3, "float"));
final QNameContext qnc36 = new QNameContext(3, 23, new QName(ns3, "gDay"));
final QNameContext qnc37 = new QNameContext(3, 24, new QName(ns3, "gMonth"));
final QNameContext qnc38 = new QNameContext(3, 25, new QName(ns3, "gMonthDay"));
final QNameContext qnc39 = new QNameContext(3, 26, new QName(ns3, "gYear"));
final QNameContext qnc40 = new QNameContext(3, 27, new QName(ns3, "gYearMonth"));
final QNameContext qnc41 = new QNameContext(3, 28, new QName(ns3, "hexBinary"));
final QNameContext qnc42 = new QNameContext(3, 29, new QName(ns3, "int"));
final QNameContext qnc43 = new QNameContext(3, 30, new QName(ns3, "integer"));
final QNameContext qnc44 = new QNameContext(3, 31, new QName(ns3, "language"));
final QNameContext qnc45 = new QNameContext(3, 32, new QName(ns3, "long"));
final QNameContext qnc46 = new QNameContext(3, 33, new QName(ns3, "negativeInteger"));
final QNameContext qnc47 = new QNameContext(3, 34, new QName(ns3, "nonNegativeInteger"));
final QNameContext qnc48 = new QNameContext(3, 35, new QName(ns3, "nonPositiveInteger"));
final QNameContext qnc49 = new QNameContext(3, 36, new QName(ns3, "normalizedString"));
final QNameContext qnc50 = new QNameContext(3, 37, new QName(ns3, "positiveInteger"));
final QNameContext qnc51 = new QNameContext(3, 38, new QName(ns3, "short"));
final QNameContext qnc52 = new QNameContext(3, 39, new QName(ns3, "string"));
final QNameContext qnc53 = new QNameContext(3, 40, new QName(ns3, "time"));
final QNameContext qnc54 = new QNameContext(3, 41, new QName(ns3, "token"));
final QNameContext qnc55 = new QNameContext(3, 42, new QName(ns3, "unsignedByte"));
final QNameContext qnc56 = new QNameContext(3, 43, new QName(ns3, "unsignedInt"));
final QNameContext qnc57 = new QNameContext(3, 44, new QName(ns3, "unsignedLong"));
final QNameContext qnc58 = new QNameContext(3, 45, new QName(ns3, "unsignedShort"));
final QNameContext[] grammarQNames3 = {qnc13, qnc14, qnc15, qnc16, qnc17, qnc18, qnc19, qnc20, qnc21, qnc22, qnc23, qnc24, qnc25, qnc26, qnc27, qnc28, qnc29, qnc30, qnc31, qnc32, qnc33, qnc34, qnc35, qnc36, qnc37, qnc38, qnc39, qnc40, qnc41, qnc42, qnc43, qnc44, qnc45, qnc46, qnc47, qnc48, qnc49, qnc50, qnc51, qnc52, qnc53, qnc54, qnc55, qnc56, qnc57, qnc58};
final String[] grammarPrefixes3 = {};
final GrammarUriContext guc3 = new GrammarUriContext(3, ns3, grammarQNames3, grammarPrefixes3);
final String ns4 = "urn:iso:15118:2:2010:AppProtocol";
final QNameContext qnc59 = new QNameContext(4, 0, new QName(ns4, "AppProtocolType"));
final QNameContext qnc60 = new QNameContext(4, 1, new QName(ns4, "idType"));
final QNameContext qnc61 = new QNameContext(4, 2, new QName(ns4, "priorityType"));
final QNameContext qnc62 = new QNameContext(4, 3, new QName(ns4, "protocolNameType"));
final QNameContext qnc63 = new QNameContext(4, 4, new QName(ns4, "protocolNamespaceType"));
final QNameContext qnc64 = new QNameContext(4, 5, new QName(ns4, "responseCodeType"));
final QNameContext qnc65 = new QNameContext(4, 6, new QName(ns4, "supportedAppProtocolReq"));
final QNameContext qnc66 = new QNameContext(4, 7, new QName(ns4, "supportedAppProtocolRes"));
final QNameContext[] grammarQNames4 = {qnc59, qnc60, qnc61, qnc62, qnc63, qnc64, qnc65, qnc66};
final String[] grammarPrefixes4 = {};
final GrammarUriContext guc4 = new GrammarUriContext(4, ns4, grammarQNames4, grammarPrefixes4);
final GrammarUriContext[] grammarUriContexts = {guc0, guc1, guc2, guc3, guc4};
final GrammarContext gc = new GrammarContext(grammarUriContexts, 67);
/* END GrammarContext ----- */
/* BEGIN Grammars ----- */
com.siemens.ct.exi.grammars.grammar.Document g0 = new com.siemens.ct.exi.grammars.grammar.Document();
com.siemens.ct.exi.grammars.grammar.SchemaInformedDocContent g1 = new com.siemens.ct.exi.grammars.grammar.SchemaInformedDocContent();
com.siemens.ct.exi.grammars.grammar.DocEnd g2 = new com.siemens.ct.exi.grammars.grammar.DocEnd();
com.siemens.ct.exi.grammars.grammar.Fragment g3 = new com.siemens.ct.exi.grammars.grammar.Fragment();
com.siemens.ct.exi.grammars.grammar.SchemaInformedFragmentContent g4 = new com.siemens.ct.exi.grammars.grammar.SchemaInformedFragmentContent();
com.siemens.ct.exi.grammars.grammar.SchemaInformedFirstStartTag g5 = new com.siemens.ct.exi.grammars.grammar.SchemaInformedFirstStartTag();
com.siemens.ct.exi.grammars.grammar.SchemaInformedFirstStartTag g6 = new com.siemens.ct.exi.grammars.grammar.SchemaInformedFirstStartTag();
com.siemens.ct.exi.grammars.grammar.SchemaInformedFirstStartTag g7 = new com.siemens.ct.exi.grammars.grammar.SchemaInformedFirstStartTag();
com.siemens.ct.exi.grammars.grammar.SchemaInformedFirstStartTag g8 = new com.siemens.ct.exi.grammars.grammar.SchemaInformedFirstStartTag();
com.siemens.ct.exi.grammars.grammar.SchemaInformedFirstStartTag g9 = new com.siemens.ct.exi.grammars.grammar.SchemaInformedFirstStartTag();
com.siemens.ct.exi.grammars.grammar.SchemaInformedFirstStartTag g10 = new com.siemens.ct.exi.grammars.grammar.SchemaInformedFirstStartTag();
com.siemens.ct.exi.grammars.grammar.SchemaInformedFirstStartTag g11 = new com.siemens.ct.exi.grammars.grammar.SchemaInformedFirstStartTag();
com.siemens.ct.exi.grammars.grammar.SchemaInformedFirstStartTag g12 = new com.siemens.ct.exi.grammars.grammar.SchemaInformedFirstStartTag();
com.siemens.ct.exi.grammars.grammar.SchemaInformedFirstStartTag g13 = new com.siemens.ct.exi.grammars.grammar.SchemaInformedFirstStartTag();
com.siemens.ct.exi.grammars.grammar.SchemaInformedFirstStartTag g14 = new com.siemens.ct.exi.grammars.grammar.SchemaInformedFirstStartTag();
com.siemens.ct.exi.grammars.grammar.SchemaInformedFirstStartTag g15 = new com.siemens.ct.exi.grammars.grammar.SchemaInformedFirstStartTag();
com.siemens.ct.exi.grammars.grammar.SchemaInformedFirstStartTag g16 = new com.siemens.ct.exi.grammars.grammar.SchemaInformedFirstStartTag();
com.siemens.ct.exi.grammars.grammar.SchemaInformedFirstStartTag g17 = new com.siemens.ct.exi.grammars.grammar.SchemaInformedFirstStartTag();
com.siemens.ct.exi.grammars.grammar.SchemaInformedFirstStartTag g18 = new com.siemens.ct.exi.grammars.grammar.SchemaInformedFirstStartTag();
com.siemens.ct.exi.grammars.grammar.SchemaInformedFirstStartTag g19 = new com.siemens.ct.exi.grammars.grammar.SchemaInformedFirstStartTag();
com.siemens.ct.exi.grammars.grammar.SchemaInformedFirstStartTag g20 = new com.siemens.ct.exi.grammars.grammar.SchemaInformedFirstStartTag();
com.siemens.ct.exi.grammars.grammar.SchemaInformedFirstStartTag g21 = new com.siemens.ct.exi.grammars.grammar.SchemaInformedFirstStartTag();
com.siemens.ct.exi.grammars.grammar.SchemaInformedFirstStartTag g22 = new com.siemens.ct.exi.grammars.grammar.SchemaInformedFirstStartTag();
com.siemens.ct.exi.grammars.grammar.SchemaInformedFirstStartTag g23 = new com.siemens.ct.exi.grammars.grammar.SchemaInformedFirstStartTag();
com.siemens.ct.exi.grammars.grammar.SchemaInformedFirstStartTag g24 = new com.siemens.ct.exi.grammars.grammar.SchemaInformedFirstStartTag();
com.siemens.ct.exi.grammars.grammar.SchemaInformedFirstStartTag g25 = new com.siemens.ct.exi.grammars.grammar.SchemaInformedFirstStartTag();
com.siemens.ct.exi.grammars.grammar.SchemaInformedFirstStartTag g26 = new com.siemens.ct.exi.grammars.grammar.SchemaInformedFirstStartTag();
com.siemens.ct.exi.grammars.grammar.SchemaInformedFirstStartTag g27 = new com.siemens.ct.exi.grammars.grammar.SchemaInformedFirstStartTag();
com.siemens.ct.exi.grammars.grammar.SchemaInformedFirstStartTag g28 = new com.siemens.ct.exi.grammars.grammar.SchemaInformedFirstStartTag();
com.siemens.ct.exi.grammars.grammar.SchemaInformedFirstStartTag g29 = new com.siemens.ct.exi.grammars.grammar.SchemaInformedFirstStartTag();
com.siemens.ct.exi.grammars.grammar.SchemaInformedFirstStartTag g30 = new com.siemens.ct.exi.grammars.grammar.SchemaInformedFirstStartTag();
com.siemens.ct.exi.grammars.grammar.SchemaInformedElement g31 = new com.siemens.ct.exi.grammars.grammar.SchemaInformedElement();
com.siemens.ct.exi.grammars.grammar.SchemaInformedElement g32 = new com.siemens.ct.exi.grammars.grammar.SchemaInformedElement();
com.siemens.ct.exi.grammars.grammar.SchemaInformedElement g33 = new com.siemens.ct.exi.grammars.grammar.SchemaInformedElement();
com.siemens.ct.exi.grammars.grammar.SchemaInformedElement g34 = new com.siemens.ct.exi.grammars.grammar.SchemaInformedElement();
com.siemens.ct.exi.grammars.grammar.SchemaInformedElement g35 = new com.siemens.ct.exi.grammars.grammar.SchemaInformedElement();
com.siemens.ct.exi.grammars.grammar.SchemaInformedElement g36 = new com.siemens.ct.exi.grammars.grammar.SchemaInformedElement();
com.siemens.ct.exi.grammars.grammar.SchemaInformedElement g37 = new com.siemens.ct.exi.grammars.grammar.SchemaInformedElement();
com.siemens.ct.exi.grammars.grammar.SchemaInformedElement g38 = new com.siemens.ct.exi.grammars.grammar.SchemaInformedElement();
com.siemens.ct.exi.grammars.grammar.SchemaInformedElement g39 = new com.siemens.ct.exi.grammars.grammar.SchemaInformedElement();
com.siemens.ct.exi.grammars.grammar.SchemaInformedElement g40 = new com.siemens.ct.exi.grammars.grammar.SchemaInformedElement();
com.siemens.ct.exi.grammars.grammar.SchemaInformedElement g41 = new com.siemens.ct.exi.grammars.grammar.SchemaInformedElement();
com.siemens.ct.exi.grammars.grammar.SchemaInformedElement g42 = new com.siemens.ct.exi.grammars.grammar.SchemaInformedElement();
com.siemens.ct.exi.grammars.grammar.SchemaInformedElement g43 = new com.siemens.ct.exi.grammars.grammar.SchemaInformedElement();
com.siemens.ct.exi.grammars.grammar.SchemaInformedElement g44 = new com.siemens.ct.exi.grammars.grammar.SchemaInformedElement();
com.siemens.ct.exi.grammars.grammar.SchemaInformedElement g45 = new com.siemens.ct.exi.grammars.grammar.SchemaInformedElement();
com.siemens.ct.exi.grammars.grammar.SchemaInformedElement g46 = new com.siemens.ct.exi.grammars.grammar.SchemaInformedElement();
com.siemens.ct.exi.grammars.grammar.SchemaInformedElement g47 = new com.siemens.ct.exi.grammars.grammar.SchemaInformedElement();
com.siemens.ct.exi.grammars.grammar.SchemaInformedElement g48 = new com.siemens.ct.exi.grammars.grammar.SchemaInformedElement();
com.siemens.ct.exi.grammars.grammar.SchemaInformedElement g49 = new com.siemens.ct.exi.grammars.grammar.SchemaInformedElement();
com.siemens.ct.exi.grammars.grammar.SchemaInformedElement g50 = new com.siemens.ct.exi.grammars.grammar.SchemaInformedElement();
com.siemens.ct.exi.grammars.grammar.SchemaInformedElement g51 = new com.siemens.ct.exi.grammars.grammar.SchemaInformedElement();
com.siemens.ct.exi.grammars.grammar.SchemaInformedElement g52 = new com.siemens.ct.exi.grammars.grammar.SchemaInformedElement();
com.siemens.ct.exi.grammars.grammar.SchemaInformedElement g53 = new com.siemens.ct.exi.grammars.grammar.SchemaInformedElement();
com.siemens.ct.exi.grammars.grammar.SchemaInformedElement g54 = new com.siemens.ct.exi.grammars.grammar.SchemaInformedElement();
com.siemens.ct.exi.grammars.grammar.SchemaInformedElement g55 = new com.siemens.ct.exi.grammars.grammar.SchemaInformedElement();
com.siemens.ct.exi.grammars.grammar.SchemaInformedElement g56 = new com.siemens.ct.exi.grammars.grammar.SchemaInformedElement();
com.siemens.ct.exi.grammars.grammar.SchemaInformedElement g57 = new com.siemens.ct.exi.grammars.grammar.SchemaInformedElement();
com.siemens.ct.exi.grammars.grammar.SchemaInformedElement g58 = new com.siemens.ct.exi.grammars.grammar.SchemaInformedElement();
com.siemens.ct.exi.grammars.grammar.SchemaInformedElement g59 = new com.siemens.ct.exi.grammars.grammar.SchemaInformedElement();
com.siemens.ct.exi.grammars.grammar.SchemaInformedElement g60 = new com.siemens.ct.exi.grammars.grammar.SchemaInformedElement();
com.siemens.ct.exi.grammars.grammar.SchemaInformedElement g61 = new com.siemens.ct.exi.grammars.grammar.SchemaInformedElement();
com.siemens.ct.exi.grammars.grammar.SchemaInformedElement g62 = new com.siemens.ct.exi.grammars.grammar.SchemaInformedElement();
com.siemens.ct.exi.grammars.grammar.SchemaInformedElement g63 = new com.siemens.ct.exi.grammars.grammar.SchemaInformedElement();
com.siemens.ct.exi.grammars.grammar.SchemaInformedElement g64 = new com.siemens.ct.exi.grammars.grammar.SchemaInformedElement();
com.siemens.ct.exi.grammars.grammar.SchemaInformedElement g65 = new com.siemens.ct.exi.grammars.grammar.SchemaInformedElement();
com.siemens.ct.exi.grammars.grammar.SchemaInformedElement g66 = new com.siemens.ct.exi.grammars.grammar.SchemaInformedElement();
com.siemens.ct.exi.grammars.grammar.SchemaInformedElement g67 = new com.siemens.ct.exi.grammars.grammar.SchemaInformedElement();
com.siemens.ct.exi.grammars.grammar.SchemaInformedElement g68 = new com.siemens.ct.exi.grammars.grammar.SchemaInformedElement();
com.siemens.ct.exi.grammars.grammar.SchemaInformedElement g69 = new com.siemens.ct.exi.grammars.grammar.SchemaInformedElement();
com.siemens.ct.exi.grammars.grammar.SchemaInformedElement g70 = new com.siemens.ct.exi.grammars.grammar.SchemaInformedElement();
com.siemens.ct.exi.grammars.grammar.SchemaInformedElement g71 = new com.siemens.ct.exi.grammars.grammar.SchemaInformedElement();
com.siemens.ct.exi.grammars.grammar.SchemaInformedElement g72 = new com.siemens.ct.exi.grammars.grammar.SchemaInformedElement();
com.siemens.ct.exi.grammars.grammar.SchemaInformedElement g73 = new com.siemens.ct.exi.grammars.grammar.SchemaInformedElement();
com.siemens.ct.exi.grammars.grammar.SchemaInformedElement g74 = new com.siemens.ct.exi.grammars.grammar.SchemaInformedElement();
com.siemens.ct.exi.grammars.grammar.SchemaInformedElement g75 = new com.siemens.ct.exi.grammars.grammar.SchemaInformedElement();
com.siemens.ct.exi.grammars.grammar.SchemaInformedElement g76 = new com.siemens.ct.exi.grammars.grammar.SchemaInformedElement();
com.siemens.ct.exi.grammars.grammar.SchemaInformedElement g77 = new com.siemens.ct.exi.grammars.grammar.SchemaInformedElement();
com.siemens.ct.exi.grammars.grammar.SchemaInformedElement g78 = new com.siemens.ct.exi.grammars.grammar.SchemaInformedElement();
com.siemens.ct.exi.grammars.grammar.SchemaInformedElement g79 = new com.siemens.ct.exi.grammars.grammar.SchemaInformedElement();
com.siemens.ct.exi.grammars.grammar.SchemaInformedElement g80 = new com.siemens.ct.exi.grammars.grammar.SchemaInformedElement();
com.siemens.ct.exi.grammars.grammar.SchemaInformedElement g81 = new com.siemens.ct.exi.grammars.grammar.SchemaInformedElement();
/* END Grammars ----- */
com.siemens.ct.exi.grammars.event.StartElement globalSE65 = new com.siemens.ct.exi.grammars.event.StartElement(qnc65, g5);
com.siemens.ct.exi.grammars.event.StartElement globalSE66 = new com.siemens.ct.exi.grammars.event.StartElement(qnc66, g11);
protected String schemaId;
void initGlobalElements() {
/* BEGIN GlobalElements ----- */
qnc65.setGlobalStartElement(globalSE65);
qnc66.setGlobalStartElement(globalSE66);
/* END GlobalElements ----- */
}
void initGlobalAttributes() {
/* BEGIN GlobalAttributes ----- */
/* END GlobalAttributes ----- */
}
void initTypeGrammars() {
/* BEGIN TypeGrammar ----- */
qnc13.setTypeGrammar(g13);
qnc14.setTypeGrammar(g7);
qnc15.setTypeGrammar(g7);
qnc16.setTypeGrammar(g7);
qnc17.setTypeGrammar(g13);
qnc18.setTypeGrammar(g7);
qnc19.setTypeGrammar(g7);
qnc20.setTypeGrammar(g13);
qnc21.setTypeGrammar(g7);
qnc22.setTypeGrammar(g7);
qnc23.setTypeGrammar(g7);
qnc24.setTypeGrammar(g7);
qnc25.setTypeGrammar(g14);
qnc26.setTypeGrammar(g7);
qnc27.setTypeGrammar(g15);
qnc28.setTypeGrammar(g16);
qnc29.setTypeGrammar(g17);
qnc30.setTypeGrammar(g18);
qnc31.setTypeGrammar(g19);
qnc32.setTypeGrammar(g20);
qnc33.setTypeGrammar(g21);
qnc34.setTypeGrammar(g7);
qnc35.setTypeGrammar(g21);
qnc36.setTypeGrammar(g22);
qnc37.setTypeGrammar(g23);
qnc38.setTypeGrammar(g24);
qnc39.setTypeGrammar(g25);
qnc40.setTypeGrammar(g26);
qnc41.setTypeGrammar(g27);
qnc42.setTypeGrammar(g28);
qnc43.setTypeGrammar(g28);
qnc44.setTypeGrammar(g7);
qnc45.setTypeGrammar(g28);
qnc46.setTypeGrammar(g28);
qnc47.setTypeGrammar(g29);
qnc48.setTypeGrammar(g28);
qnc49.setTypeGrammar(g7);
qnc50.setTypeGrammar(g29);
qnc51.setTypeGrammar(g28);
qnc52.setTypeGrammar(g7);
qnc53.setTypeGrammar(g30);
qnc54.setTypeGrammar(g7);
qnc55.setTypeGrammar(g9);
qnc56.setTypeGrammar(g29);
qnc57.setTypeGrammar(g29);
qnc58.setTypeGrammar(g29);
qnc59.setTypeGrammar(g6);
qnc60.setTypeGrammar(g9);
qnc61.setTypeGrammar(g10);
qnc62.setTypeGrammar(g7);
qnc63.setTypeGrammar(g7);
qnc64.setTypeGrammar(g12);
/* END TypeGrammar ----- */
}
void initGrammarEvents() {
/* BEGIN Grammar Events ----- */
g0.addProduction(new com.siemens.ct.exi.grammars.event.StartDocument(), g1);
g1.addProduction(globalSE65, g2);
g1.addProduction(globalSE66, g2);
g1.addProduction(new com.siemens.ct.exi.grammars.event.StartElementGeneric(), g2);
g2.addProduction(new com.siemens.ct.exi.grammars.event.EndDocument(), g32);
g3.addProduction(new com.siemens.ct.exi.grammars.event.StartDocument(), g4);
g4.addProduction(new com.siemens.ct.exi.grammars.event.StartElement(qnc0, g6), g4);
g4.addProduction(new com.siemens.ct.exi.grammars.event.StartElement(qnc1, g10), g4);
g4.addProduction(new com.siemens.ct.exi.grammars.event.StartElement(qnc2, g7), g4);
g4.addProduction(new com.siemens.ct.exi.grammars.event.StartElement(qnc3, g12), g4);
g4.addProduction(new com.siemens.ct.exi.grammars.event.StartElement(qnc4, g9), g4);
g4.addProduction(new com.siemens.ct.exi.grammars.event.StartElement(qnc5, g8), g4);
g4.addProduction(new com.siemens.ct.exi.grammars.event.StartElement(qnc6, g8), g4);
g4.addProduction(globalSE65, g4);
g4.addProduction(globalSE66, g4);
g4.addProduction(new com.siemens.ct.exi.grammars.event.StartElementGeneric(), g4);
g4.addProduction(new com.siemens.ct.exi.grammars.event.EndDocument(), g32);
g5.addProduction(new com.siemens.ct.exi.grammars.event.StartElement(qnc0, g6), g42);
g6.addProduction(new com.siemens.ct.exi.grammars.event.StartElement(qnc2, g7), g34);
g7.addProduction(new com.siemens.ct.exi.grammars.event.Characters(new com.siemens.ct.exi.datatype.StringDatatype(qnc63)), g31);
g8.addProduction(new com.siemens.ct.exi.grammars.event.Characters(new com.siemens.ct.exi.datatype.UnsignedIntegerDatatype(qnc56)), g31);
g9.addProduction(new com.siemens.ct.exi.grammars.event.Characters(new com.siemens.ct.exi.datatype.NBitUnsignedIntegerDatatype(com.siemens.ct.exi.values.IntegerValue.valueOf(0), com.siemens.ct.exi.values.IntegerValue.valueOf(255), qnc60)), g31);
g10.addProduction(new com.siemens.ct.exi.grammars.event.Characters(new com.siemens.ct.exi.datatype.NBitUnsignedIntegerDatatype(com.siemens.ct.exi.values.IntegerValue.valueOf(1), com.siemens.ct.exi.values.IntegerValue.valueOf(20), qnc61)), g31);
g11.addProduction(new com.siemens.ct.exi.grammars.event.StartElement(qnc3, g12), g63);
g12.addProduction(new com.siemens.ct.exi.grammars.event.Characters(new com.siemens.ct.exi.datatype.EnumerationDatatype(new com.siemens.ct.exi.values.Value[] {new com.siemens.ct.exi.values.StringValue("OK_SuccessfulNegotiation"), new com.siemens.ct.exi.values.StringValue("OK_SuccessfulNegotiationWithMinorDeviation"), new com.siemens.ct.exi.values.StringValue("Failed_NoNegotiation")}, new com.siemens.ct.exi.datatype.StringDatatype(qnc52), qnc64)), g31);
g13.addProduction(new com.siemens.ct.exi.grammars.event.Characters(new com.siemens.ct.exi.datatype.ListDatatype(new com.siemens.ct.exi.datatype.StringDatatype(qnc14), qnc13)), g31);
g14.addProduction(new com.siemens.ct.exi.grammars.event.AttributeGeneric(), g14);
g14.addProduction(new com.siemens.ct.exi.grammars.event.StartElementGeneric(), g66);
g14.addProduction(new com.siemens.ct.exi.grammars.event.EndElement(), g32);
g14.addProduction(new com.siemens.ct.exi.grammars.event.CharactersGeneric(), g66);
g15.addProduction(new com.siemens.ct.exi.grammars.event.Characters(new com.siemens.ct.exi.datatype.BinaryBase64Datatype(qnc27)), g31);
g16.addProduction(new com.siemens.ct.exi.grammars.event.Characters(new com.siemens.ct.exi.datatype.BooleanDatatype(qnc28)), g31);
g17.addProduction(new com.siemens.ct.exi.grammars.event.Characters(new com.siemens.ct.exi.datatype.NBitUnsignedIntegerDatatype(com.siemens.ct.exi.values.IntegerValue.valueOf(-128), com.siemens.ct.exi.values.IntegerValue.valueOf(127), qnc29)), g31);
g18.addProduction(new com.siemens.ct.exi.grammars.event.Characters(new com.siemens.ct.exi.datatype.DatetimeDatatype(com.siemens.ct.exi.types.DateTimeType.date, qnc30)), g31);
g19.addProduction(new com.siemens.ct.exi.grammars.event.Characters(new com.siemens.ct.exi.datatype.DatetimeDatatype(com.siemens.ct.exi.types.DateTimeType.dateTime, qnc31)), g31);
g20.addProduction(new com.siemens.ct.exi.grammars.event.Characters(new com.siemens.ct.exi.datatype.DecimalDatatype(qnc32)), g31);
g21.addProduction(new com.siemens.ct.exi.grammars.event.Characters(new com.siemens.ct.exi.datatype.FloatDatatype(qnc33)), g31);
g22.addProduction(new com.siemens.ct.exi.grammars.event.Characters(new com.siemens.ct.exi.datatype.DatetimeDatatype(com.siemens.ct.exi.types.DateTimeType.gDay, qnc36)), g31);
g23.addProduction(new com.siemens.ct.exi.grammars.event.Characters(new com.siemens.ct.exi.datatype.DatetimeDatatype(com.siemens.ct.exi.types.DateTimeType.gMonth, qnc37)), g31);
g24.addProduction(new com.siemens.ct.exi.grammars.event.Characters(new com.siemens.ct.exi.datatype.DatetimeDatatype(com.siemens.ct.exi.types.DateTimeType.gMonthDay, qnc38)), g31);
g25.addProduction(new com.siemens.ct.exi.grammars.event.Characters(new com.siemens.ct.exi.datatype.DatetimeDatatype(com.siemens.ct.exi.types.DateTimeType.gYear, qnc39)), g31);
g26.addProduction(new com.siemens.ct.exi.grammars.event.Characters(new com.siemens.ct.exi.datatype.DatetimeDatatype(com.siemens.ct.exi.types.DateTimeType.gYearMonth, qnc40)), g31);
g27.addProduction(new com.siemens.ct.exi.grammars.event.Characters(new com.siemens.ct.exi.datatype.BinaryHexDatatype(qnc41)), g31);
g28.addProduction(new com.siemens.ct.exi.grammars.event.Characters(new com.siemens.ct.exi.datatype.IntegerDatatype(qnc42)), g31);
g29.addProduction(new com.siemens.ct.exi.grammars.event.Characters(new com.siemens.ct.exi.datatype.UnsignedIntegerDatatype(qnc47)), g31);
g30.addProduction(new com.siemens.ct.exi.grammars.event.Characters(new com.siemens.ct.exi.datatype.DatetimeDatatype(com.siemens.ct.exi.types.DateTimeType.time, qnc53)), g31);
g31.addProduction(new com.siemens.ct.exi.grammars.event.EndElement(), g32);
g33.addProduction(new com.siemens.ct.exi.grammars.event.Characters(new com.siemens.ct.exi.datatype.StringDatatype(qnc63)), g31);
g34.addProduction(new com.siemens.ct.exi.grammars.event.StartElement(qnc5, g8), g36);
g35.addProduction(new com.siemens.ct.exi.grammars.event.Characters(new com.siemens.ct.exi.datatype.UnsignedIntegerDatatype(qnc56)), g31);
g36.addProduction(new com.siemens.ct.exi.grammars.event.StartElement(qnc6, g8), g37);
g37.addProduction(new com.siemens.ct.exi.grammars.event.StartElement(qnc4, g9), g39);
g38.addProduction(new com.siemens.ct.exi.grammars.event.Characters(new com.siemens.ct.exi.datatype.NBitUnsignedIntegerDatatype(com.siemens.ct.exi.values.IntegerValue.valueOf(0), com.siemens.ct.exi.values.IntegerValue.valueOf(255), qnc60)), g31);
g39.addProduction(new com.siemens.ct.exi.grammars.event.StartElement(qnc1, g10), g31);
g40.addProduction(new com.siemens.ct.exi.grammars.event.Characters(new com.siemens.ct.exi.datatype.NBitUnsignedIntegerDatatype(com.siemens.ct.exi.values.IntegerValue.valueOf(1), com.siemens.ct.exi.values.IntegerValue.valueOf(20), qnc61)), g31);
g41.addProduction(new com.siemens.ct.exi.grammars.event.StartElement(qnc2, g7), g34);
g42.addProduction(new com.siemens.ct.exi.grammars.event.StartElement(qnc0, g6), g43);
g42.addProduction(new com.siemens.ct.exi.grammars.event.EndElement(), g32);
g43.addProduction(new com.siemens.ct.exi.grammars.event.StartElement(qnc0, g6), g44);
g43.addProduction(new com.siemens.ct.exi.grammars.event.EndElement(), g32);
g44.addProduction(new com.siemens.ct.exi.grammars.event.StartElement(qnc0, g6), g45);
g44.addProduction(new com.siemens.ct.exi.grammars.event.EndElement(), g32);
g45.addProduction(new com.siemens.ct.exi.grammars.event.StartElement(qnc0, g6), g46);
g45.addProduction(new com.siemens.ct.exi.grammars.event.EndElement(), g32);
g46.addProduction(new com.siemens.ct.exi.grammars.event.StartElement(qnc0, g6), g47);
g46.addProduction(new com.siemens.ct.exi.grammars.event.EndElement(), g32);
g47.addProduction(new com.siemens.ct.exi.grammars.event.StartElement(qnc0, g6), g48);
g47.addProduction(new com.siemens.ct.exi.grammars.event.EndElement(), g32);
g48.addProduction(new com.siemens.ct.exi.grammars.event.StartElement(qnc0, g6), g49);
g48.addProduction(new com.siemens.ct.exi.grammars.event.EndElement(), g32);
g49.addProduction(new com.siemens.ct.exi.grammars.event.StartElement(qnc0, g6), g50);
g49.addProduction(new com.siemens.ct.exi.grammars.event.EndElement(), g32);
g50.addProduction(new com.siemens.ct.exi.grammars.event.StartElement(qnc0, g6), g51);
g50.addProduction(new com.siemens.ct.exi.grammars.event.EndElement(), g32);
g51.addProduction(new com.siemens.ct.exi.grammars.event.StartElement(qnc0, g6), g52);
g51.addProduction(new com.siemens.ct.exi.grammars.event.EndElement(), g32);
g52.addProduction(new com.siemens.ct.exi.grammars.event.StartElement(qnc0, g6), g53);
g52.addProduction(new com.siemens.ct.exi.grammars.event.EndElement(), g32);
g53.addProduction(new com.siemens.ct.exi.grammars.event.StartElement(qnc0, g6), g54);
g53.addProduction(new com.siemens.ct.exi.grammars.event.EndElement(), g32);
g54.addProduction(new com.siemens.ct.exi.grammars.event.StartElement(qnc0, g6), g55);
g54.addProduction(new com.siemens.ct.exi.grammars.event.EndElement(), g32);
g55.addProduction(new com.siemens.ct.exi.grammars.event.StartElement(qnc0, g6), g56);
g55.addProduction(new com.siemens.ct.exi.grammars.event.EndElement(), g32);
g56.addProduction(new com.siemens.ct.exi.grammars.event.StartElement(qnc0, g6), g57);
g56.addProduction(new com.siemens.ct.exi.grammars.event.EndElement(), g32);
g57.addProduction(new com.siemens.ct.exi.grammars.event.StartElement(qnc0, g6), g58);
g57.addProduction(new com.siemens.ct.exi.grammars.event.EndElement(), g32);
g58.addProduction(new com.siemens.ct.exi.grammars.event.StartElement(qnc0, g6), g59);
g58.addProduction(new com.siemens.ct.exi.grammars.event.EndElement(), g32);
g59.addProduction(new com.siemens.ct.exi.grammars.event.StartElement(qnc0, g6), g60);
g59.addProduction(new com.siemens.ct.exi.grammars.event.EndElement(), g32);
g60.addProduction(new com.siemens.ct.exi.grammars.event.StartElement(qnc0, g6), g31);
g60.addProduction(new com.siemens.ct.exi.grammars.event.EndElement(), g32);
g61.addProduction(new com.siemens.ct.exi.grammars.event.StartElement(qnc0, g6), g42);
g62.addProduction(new com.siemens.ct.exi.grammars.event.Characters(new com.siemens.ct.exi.datatype.EnumerationDatatype(new com.siemens.ct.exi.values.Value[] {new com.siemens.ct.exi.values.StringValue("OK_SuccessfulNegotiation"), new com.siemens.ct.exi.values.StringValue("OK_SuccessfulNegotiationWithMinorDeviation"), new com.siemens.ct.exi.values.StringValue("Failed_NoNegotiation")}, new com.siemens.ct.exi.datatype.StringDatatype(qnc52), qnc64)), g31);
g63.addProduction(new com.siemens.ct.exi.grammars.event.StartElement(qnc4, g9), g31);
g63.addProduction(new com.siemens.ct.exi.grammars.event.EndElement(), g32);
g64.addProduction(new com.siemens.ct.exi.grammars.event.StartElement(qnc3, g12), g63);
g65.addProduction(new com.siemens.ct.exi.grammars.event.Characters(new com.siemens.ct.exi.datatype.ListDatatype(new com.siemens.ct.exi.datatype.StringDatatype(qnc14), qnc13)), g31);
g66.addProduction(new com.siemens.ct.exi.grammars.event.StartElementGeneric(), g66);
g66.addProduction(new com.siemens.ct.exi.grammars.event.EndElement(), g32);
g66.addProduction(new com.siemens.ct.exi.grammars.event.CharactersGeneric(), g66);
g67.addProduction(new com.siemens.ct.exi.grammars.event.Characters(new com.siemens.ct.exi.datatype.BinaryBase64Datatype(qnc27)), g31);
g68.addProduction(new com.siemens.ct.exi.grammars.event.Characters(new com.siemens.ct.exi.datatype.BooleanDatatype(qnc28)), g31);
g69.addProduction(new com.siemens.ct.exi.grammars.event.Characters(new com.siemens.ct.exi.datatype.NBitUnsignedIntegerDatatype(com.siemens.ct.exi.values.IntegerValue.valueOf(-128), com.siemens.ct.exi.values.IntegerValue.valueOf(127), qnc29)), g31);
g70.addProduction(new com.siemens.ct.exi.grammars.event.Characters(new com.siemens.ct.exi.datatype.DatetimeDatatype(com.siemens.ct.exi.types.DateTimeType.date, qnc30)), g31);
g71.addProduction(new com.siemens.ct.exi.grammars.event.Characters(new com.siemens.ct.exi.datatype.DatetimeDatatype(com.siemens.ct.exi.types.DateTimeType.dateTime, qnc31)), g31);
g72.addProduction(new com.siemens.ct.exi.grammars.event.Characters(new com.siemens.ct.exi.datatype.DecimalDatatype(qnc32)), g31);
g73.addProduction(new com.siemens.ct.exi.grammars.event.Characters(new com.siemens.ct.exi.datatype.FloatDatatype(qnc33)), g31);
g74.addProduction(new com.siemens.ct.exi.grammars.event.Characters(new com.siemens.ct.exi.datatype.DatetimeDatatype(com.siemens.ct.exi.types.DateTimeType.gDay, qnc36)), g31);
g75.addProduction(new com.siemens.ct.exi.grammars.event.Characters(new com.siemens.ct.exi.datatype.DatetimeDatatype(com.siemens.ct.exi.types.DateTimeType.gMonth, qnc37)), g31);
g76.addProduction(new com.siemens.ct.exi.grammars.event.Characters(new com.siemens.ct.exi.datatype.DatetimeDatatype(com.siemens.ct.exi.types.DateTimeType.gMonthDay, qnc38)), g31);
g77.addProduction(new com.siemens.ct.exi.grammars.event.Characters(new com.siemens.ct.exi.datatype.DatetimeDatatype(com.siemens.ct.exi.types.DateTimeType.gYear, qnc39)), g31);
g78.addProduction(new com.siemens.ct.exi.grammars.event.Characters(new com.siemens.ct.exi.datatype.DatetimeDatatype(com.siemens.ct.exi.types.DateTimeType.gYearMonth, qnc40)), g31);
g79.addProduction(new com.siemens.ct.exi.grammars.event.Characters(new com.siemens.ct.exi.datatype.BinaryHexDatatype(qnc41)), g31);
g80.addProduction(new com.siemens.ct.exi.grammars.event.Characters(new com.siemens.ct.exi.datatype.IntegerDatatype(qnc42)), g31);
g81.addProduction(new com.siemens.ct.exi.grammars.event.Characters(new com.siemens.ct.exi.datatype.DatetimeDatatype(com.siemens.ct.exi.types.DateTimeType.time, qnc53)), g31);
/* END Grammar Events ----- */
}
void initFirstStartGrammars() {
/* BEGIN FirstStartGrammar ----- */
g5.setElementContentGrammar(g61);
g6.setElementContentGrammar(g41);
g7.setElementContentGrammar(g33);
g8.setElementContentGrammar(g35);
g8.setTypeCastable(true);
g9.setElementContentGrammar(g38);
g10.setElementContentGrammar(g40);
g11.setElementContentGrammar(g64);
g12.setElementContentGrammar(g62);
g13.setElementContentGrammar(g65);
g14.setElementContentGrammar(g66);
g15.setElementContentGrammar(g67);
g16.setElementContentGrammar(g68);
g17.setElementContentGrammar(g69);
g18.setElementContentGrammar(g70);
g19.setElementContentGrammar(g71);
g20.setElementContentGrammar(g72);
g21.setElementContentGrammar(g73);
g22.setElementContentGrammar(g74);
g23.setElementContentGrammar(g75);
g24.setElementContentGrammar(g76);
g25.setElementContentGrammar(g77);
g26.setElementContentGrammar(g78);
g27.setElementContentGrammar(g79);
g28.setElementContentGrammar(g80);
g29.setElementContentGrammar(g35);
g30.setElementContentGrammar(g81);
/* END FirstStartGrammar ----- */
}
public EXIficient_V2G_CI_AppProtocol() {
initGlobalElements();
initGlobalAttributes();
initTypeGrammars();
initGrammarEvents();
initFirstStartGrammars();
}
public boolean isSchemaInformed() {
return true;
}
public String getSchemaId() {
return schemaId;
}
public void setSchemaId(String schemaId) throws UnsupportedOption {
this.schemaId = schemaId;
}
public boolean isBuiltInXMLSchemaTypesOnly() {
return false;
}
public Grammar getDocumentGrammar() {
return g0;
}
public Grammar getFragmentGrammar() {
return g3;
}
public GrammarContext getGrammarContext() {
return gc;
}
}

View File

@@ -0,0 +1,919 @@
/*******************************************************************************
* The MIT License (MIT)
*
* Copyright (c) 2015 - 2019 Dr. Marc Mültin (V2G Clarity)
*
* Permission is hereby granted, free of charge, to any person obtaining a copy
* of this software and associated documentation files (the "Software"), to deal
* in the Software without restriction, including without limitation the rights
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
* copies of the Software, and to permit persons to whom the Software is
* furnished to do so, subject to the following conditions:
*
* The above copyright notice and this permission notice shall be included in
* all copies or substantial portions of the Software.
*
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
* THE SOFTWARE.
*******************************************************************************/
package com.v2gclarity.risev2g.shared.exiCodec;
import javax.xml.namespace.QName;
import com.siemens.ct.exi.context.GrammarContext;
import com.siemens.ct.exi.context.GrammarUriContext;
import com.siemens.ct.exi.context.QNameContext;
import com.siemens.ct.exi.exceptions.UnsupportedOption;
import com.siemens.ct.exi.grammars.Grammars;
import com.siemens.ct.exi.grammars.event.EndDocument;
import com.siemens.ct.exi.grammars.event.Event;
import com.siemens.ct.exi.grammars.event.StartDocument;
import com.siemens.ct.exi.grammars.event.StartElement;
import com.siemens.ct.exi.grammars.grammar.DocEnd;
import com.siemens.ct.exi.grammars.grammar.Document;
import com.siemens.ct.exi.grammars.grammar.Fragment;
import com.siemens.ct.exi.grammars.grammar.Grammar;
import com.siemens.ct.exi.grammars.grammar.SchemaInformedDocContent;
import com.siemens.ct.exi.grammars.grammar.SchemaInformedFirstStartTagGrammar;
@SuppressWarnings("unused")
public class EXIficient_xmldsig_core_schema implements Grammars {
/* BEGIN GrammarContext ----- */
final String ns0 = "";
final QNameContext qnc0 = new QNameContext(0, 0, new QName(ns0, "Algorithm"));
final QNameContext qnc1 = new QNameContext(0, 1, new QName(ns0, "Encoding"));
final QNameContext qnc2 = new QNameContext(0, 2, new QName(ns0, "Id"));
final QNameContext qnc3 = new QNameContext(0, 3, new QName(ns0, "MimeType"));
final QNameContext qnc4 = new QNameContext(0, 4, new QName(ns0, "Target"));
final QNameContext qnc5 = new QNameContext(0, 5, new QName(ns0, "Type"));
final QNameContext qnc6 = new QNameContext(0, 6, new QName(ns0, "URI"));
final QNameContext[] grammarQNames0 = {qnc0, qnc1, qnc2, qnc3, qnc4, qnc5, qnc6};
final String[] grammarPrefixes0 = {""};
final GrammarUriContext guc0 = new GrammarUriContext(0, ns0, grammarQNames0, grammarPrefixes0);
final String ns1 = "http://www.w3.org/XML/1998/namespace";
final QNameContext qnc7 = new QNameContext(1, 0, new QName(ns1, "base"));
final QNameContext qnc8 = new QNameContext(1, 1, new QName(ns1, "id"));
final QNameContext qnc9 = new QNameContext(1, 2, new QName(ns1, "lang"));
final QNameContext qnc10 = new QNameContext(1, 3, new QName(ns1, "space"));
final QNameContext[] grammarQNames1 = {qnc7, qnc8, qnc9, qnc10};
final String[] grammarPrefixes1 = {"xml"};
final GrammarUriContext guc1 = new GrammarUriContext(1, ns1, grammarQNames1, grammarPrefixes1);
final String ns2 = "http://www.w3.org/2001/XMLSchema-instance";
final QNameContext qnc11 = new QNameContext(2, 0, new QName(ns2, "nil"));
final QNameContext qnc12 = new QNameContext(2, 1, new QName(ns2, "type"));
final QNameContext[] grammarQNames2 = {qnc11, qnc12};
final String[] grammarPrefixes2 = {"xsi"};
final GrammarUriContext guc2 = new GrammarUriContext(2, ns2, grammarQNames2, grammarPrefixes2);
final String ns3 = "http://www.w3.org/2001/XMLSchema";
final QNameContext qnc13 = new QNameContext(3, 0, new QName(ns3, "ENTITIES"));
final QNameContext qnc14 = new QNameContext(3, 1, new QName(ns3, "ENTITY"));
final QNameContext qnc15 = new QNameContext(3, 2, new QName(ns3, "ID"));
final QNameContext qnc16 = new QNameContext(3, 3, new QName(ns3, "IDREF"));
final QNameContext qnc17 = new QNameContext(3, 4, new QName(ns3, "IDREFS"));
final QNameContext qnc18 = new QNameContext(3, 5, new QName(ns3, "NCName"));
final QNameContext qnc19 = new QNameContext(3, 6, new QName(ns3, "NMTOKEN"));
final QNameContext qnc20 = new QNameContext(3, 7, new QName(ns3, "NMTOKENS"));
final QNameContext qnc21 = new QNameContext(3, 8, new QName(ns3, "NOTATION"));
final QNameContext qnc22 = new QNameContext(3, 9, new QName(ns3, "Name"));
final QNameContext qnc23 = new QNameContext(3, 10, new QName(ns3, "QName"));
final QNameContext qnc24 = new QNameContext(3, 11, new QName(ns3, "anySimpleType"));
final QNameContext qnc25 = new QNameContext(3, 12, new QName(ns3, "anyType"));
final QNameContext qnc26 = new QNameContext(3, 13, new QName(ns3, "anyURI"));
final QNameContext qnc27 = new QNameContext(3, 14, new QName(ns3, "base64Binary"));
final QNameContext qnc28 = new QNameContext(3, 15, new QName(ns3, "boolean"));
final QNameContext qnc29 = new QNameContext(3, 16, new QName(ns3, "byte"));
final QNameContext qnc30 = new QNameContext(3, 17, new QName(ns3, "date"));
final QNameContext qnc31 = new QNameContext(3, 18, new QName(ns3, "dateTime"));
final QNameContext qnc32 = new QNameContext(3, 19, new QName(ns3, "decimal"));
final QNameContext qnc33 = new QNameContext(3, 20, new QName(ns3, "double"));
final QNameContext qnc34 = new QNameContext(3, 21, new QName(ns3, "duration"));
final QNameContext qnc35 = new QNameContext(3, 22, new QName(ns3, "float"));
final QNameContext qnc36 = new QNameContext(3, 23, new QName(ns3, "gDay"));
final QNameContext qnc37 = new QNameContext(3, 24, new QName(ns3, "gMonth"));
final QNameContext qnc38 = new QNameContext(3, 25, new QName(ns3, "gMonthDay"));
final QNameContext qnc39 = new QNameContext(3, 26, new QName(ns3, "gYear"));
final QNameContext qnc40 = new QNameContext(3, 27, new QName(ns3, "gYearMonth"));
final QNameContext qnc41 = new QNameContext(3, 28, new QName(ns3, "hexBinary"));
final QNameContext qnc42 = new QNameContext(3, 29, new QName(ns3, "int"));
final QNameContext qnc43 = new QNameContext(3, 30, new QName(ns3, "integer"));
final QNameContext qnc44 = new QNameContext(3, 31, new QName(ns3, "language"));
final QNameContext qnc45 = new QNameContext(3, 32, new QName(ns3, "long"));
final QNameContext qnc46 = new QNameContext(3, 33, new QName(ns3, "negativeInteger"));
final QNameContext qnc47 = new QNameContext(3, 34, new QName(ns3, "nonNegativeInteger"));
final QNameContext qnc48 = new QNameContext(3, 35, new QName(ns3, "nonPositiveInteger"));
final QNameContext qnc49 = new QNameContext(3, 36, new QName(ns3, "normalizedString"));
final QNameContext qnc50 = new QNameContext(3, 37, new QName(ns3, "positiveInteger"));
final QNameContext qnc51 = new QNameContext(3, 38, new QName(ns3, "short"));
final QNameContext qnc52 = new QNameContext(3, 39, new QName(ns3, "string"));
final QNameContext qnc53 = new QNameContext(3, 40, new QName(ns3, "time"));
final QNameContext qnc54 = new QNameContext(3, 41, new QName(ns3, "token"));
final QNameContext qnc55 = new QNameContext(3, 42, new QName(ns3, "unsignedByte"));
final QNameContext qnc56 = new QNameContext(3, 43, new QName(ns3, "unsignedInt"));
final QNameContext qnc57 = new QNameContext(3, 44, new QName(ns3, "unsignedLong"));
final QNameContext qnc58 = new QNameContext(3, 45, new QName(ns3, "unsignedShort"));
final QNameContext[] grammarQNames3 = {qnc13, qnc14, qnc15, qnc16, qnc17, qnc18, qnc19, qnc20, qnc21, qnc22, qnc23, qnc24, qnc25, qnc26, qnc27, qnc28, qnc29, qnc30, qnc31, qnc32, qnc33, qnc34, qnc35, qnc36, qnc37, qnc38, qnc39, qnc40, qnc41, qnc42, qnc43, qnc44, qnc45, qnc46, qnc47, qnc48, qnc49, qnc50, qnc51, qnc52, qnc53, qnc54, qnc55, qnc56, qnc57, qnc58};
final String[] grammarPrefixes3 = {};
final GrammarUriContext guc3 = new GrammarUriContext(3, ns3, grammarQNames3, grammarPrefixes3);
final String ns4 = "http://www.w3.org/2000/09/xmldsig#";
final QNameContext qnc59 = new QNameContext(4, 0, new QName(ns4, "CanonicalizationMethod"));
final QNameContext qnc60 = new QNameContext(4, 1, new QName(ns4, "CanonicalizationMethodType"));
final QNameContext qnc61 = new QNameContext(4, 2, new QName(ns4, "CryptoBinary"));
final QNameContext qnc62 = new QNameContext(4, 3, new QName(ns4, "DSAKeyValue"));
final QNameContext qnc63 = new QNameContext(4, 4, new QName(ns4, "DSAKeyValueType"));
final QNameContext qnc64 = new QNameContext(4, 5, new QName(ns4, "DigestMethod"));
final QNameContext qnc65 = new QNameContext(4, 6, new QName(ns4, "DigestMethodType"));
final QNameContext qnc66 = new QNameContext(4, 7, new QName(ns4, "DigestValue"));
final QNameContext qnc67 = new QNameContext(4, 8, new QName(ns4, "DigestValueType"));
final QNameContext qnc68 = new QNameContext(4, 9, new QName(ns4, "Exponent"));
final QNameContext qnc69 = new QNameContext(4, 10, new QName(ns4, "G"));
final QNameContext qnc70 = new QNameContext(4, 11, new QName(ns4, "HMACOutputLength"));
final QNameContext qnc71 = new QNameContext(4, 12, new QName(ns4, "HMACOutputLengthType"));
final QNameContext qnc72 = new QNameContext(4, 13, new QName(ns4, "J"));
final QNameContext qnc73 = new QNameContext(4, 14, new QName(ns4, "KeyInfo"));
final QNameContext qnc74 = new QNameContext(4, 15, new QName(ns4, "KeyInfoType"));
final QNameContext qnc75 = new QNameContext(4, 16, new QName(ns4, "KeyName"));
final QNameContext qnc76 = new QNameContext(4, 17, new QName(ns4, "KeyValue"));
final QNameContext qnc77 = new QNameContext(4, 18, new QName(ns4, "KeyValueType"));
final QNameContext qnc78 = new QNameContext(4, 19, new QName(ns4, "Manifest"));
final QNameContext qnc79 = new QNameContext(4, 20, new QName(ns4, "ManifestType"));
final QNameContext qnc80 = new QNameContext(4, 21, new QName(ns4, "MgmtData"));
final QNameContext qnc81 = new QNameContext(4, 22, new QName(ns4, "Modulus"));
final QNameContext qnc82 = new QNameContext(4, 23, new QName(ns4, "Object"));
final QNameContext qnc83 = new QNameContext(4, 24, new QName(ns4, "ObjectType"));
final QNameContext qnc84 = new QNameContext(4, 25, new QName(ns4, "P"));
final QNameContext qnc85 = new QNameContext(4, 26, new QName(ns4, "PGPData"));
final QNameContext qnc86 = new QNameContext(4, 27, new QName(ns4, "PGPDataType"));
final QNameContext qnc87 = new QNameContext(4, 28, new QName(ns4, "PGPKeyID"));
final QNameContext qnc88 = new QNameContext(4, 29, new QName(ns4, "PGPKeyPacket"));
final QNameContext qnc89 = new QNameContext(4, 30, new QName(ns4, "PgenCounter"));
final QNameContext qnc90 = new QNameContext(4, 31, new QName(ns4, "Q"));
final QNameContext qnc91 = new QNameContext(4, 32, new QName(ns4, "RSAKeyValue"));
final QNameContext qnc92 = new QNameContext(4, 33, new QName(ns4, "RSAKeyValueType"));
final QNameContext qnc93 = new QNameContext(4, 34, new QName(ns4, "Reference"));
final QNameContext qnc94 = new QNameContext(4, 35, new QName(ns4, "ReferenceType"));
final QNameContext qnc95 = new QNameContext(4, 36, new QName(ns4, "RetrievalMethod"));
final QNameContext qnc96 = new QNameContext(4, 37, new QName(ns4, "RetrievalMethodType"));
final QNameContext qnc97 = new QNameContext(4, 38, new QName(ns4, "SPKIData"));
final QNameContext qnc98 = new QNameContext(4, 39, new QName(ns4, "SPKIDataType"));
final QNameContext qnc99 = new QNameContext(4, 40, new QName(ns4, "SPKISexp"));
final QNameContext qnc100 = new QNameContext(4, 41, new QName(ns4, "Seed"));
final QNameContext qnc101 = new QNameContext(4, 42, new QName(ns4, "Signature"));
final QNameContext qnc102 = new QNameContext(4, 43, new QName(ns4, "SignatureMethod"));
final QNameContext qnc103 = new QNameContext(4, 44, new QName(ns4, "SignatureMethodType"));
final QNameContext qnc104 = new QNameContext(4, 45, new QName(ns4, "SignatureProperties"));
final QNameContext qnc105 = new QNameContext(4, 46, new QName(ns4, "SignaturePropertiesType"));
final QNameContext qnc106 = new QNameContext(4, 47, new QName(ns4, "SignatureProperty"));
final QNameContext qnc107 = new QNameContext(4, 48, new QName(ns4, "SignaturePropertyType"));
final QNameContext qnc108 = new QNameContext(4, 49, new QName(ns4, "SignatureType"));
final QNameContext qnc109 = new QNameContext(4, 50, new QName(ns4, "SignatureValue"));
final QNameContext qnc110 = new QNameContext(4, 51, new QName(ns4, "SignatureValueType"));
final QNameContext qnc111 = new QNameContext(4, 52, new QName(ns4, "SignedInfo"));
final QNameContext qnc112 = new QNameContext(4, 53, new QName(ns4, "SignedInfoType"));
final QNameContext qnc113 = new QNameContext(4, 54, new QName(ns4, "Transform"));
final QNameContext qnc114 = new QNameContext(4, 55, new QName(ns4, "TransformType"));
final QNameContext qnc115 = new QNameContext(4, 56, new QName(ns4, "Transforms"));
final QNameContext qnc116 = new QNameContext(4, 57, new QName(ns4, "TransformsType"));
final QNameContext qnc117 = new QNameContext(4, 58, new QName(ns4, "X509CRL"));
final QNameContext qnc118 = new QNameContext(4, 59, new QName(ns4, "X509Certificate"));
final QNameContext qnc119 = new QNameContext(4, 60, new QName(ns4, "X509Data"));
final QNameContext qnc120 = new QNameContext(4, 61, new QName(ns4, "X509DataType"));
final QNameContext qnc121 = new QNameContext(4, 62, new QName(ns4, "X509IssuerName"));
final QNameContext qnc122 = new QNameContext(4, 63, new QName(ns4, "X509IssuerSerial"));
final QNameContext qnc123 = new QNameContext(4, 64, new QName(ns4, "X509IssuerSerialType"));
final QNameContext qnc124 = new QNameContext(4, 65, new QName(ns4, "X509SKI"));
final QNameContext qnc125 = new QNameContext(4, 66, new QName(ns4, "X509SerialNumber"));
final QNameContext qnc126 = new QNameContext(4, 67, new QName(ns4, "X509SubjectName"));
final QNameContext qnc127 = new QNameContext(4, 68, new QName(ns4, "XPath"));
final QNameContext qnc128 = new QNameContext(4, 69, new QName(ns4, "Y"));
final QNameContext[] grammarQNames4 = {qnc59, qnc60, qnc61, qnc62, qnc63, qnc64, qnc65, qnc66, qnc67, qnc68, qnc69, qnc70, qnc71, qnc72, qnc73, qnc74, qnc75, qnc76, qnc77, qnc78, qnc79, qnc80, qnc81, qnc82, qnc83, qnc84, qnc85, qnc86, qnc87, qnc88, qnc89, qnc90, qnc91, qnc92, qnc93, qnc94, qnc95, qnc96, qnc97, qnc98, qnc99, qnc100, qnc101, qnc102, qnc103, qnc104, qnc105, qnc106, qnc107, qnc108, qnc109, qnc110, qnc111, qnc112, qnc113, qnc114, qnc115, qnc116, qnc117, qnc118, qnc119, qnc120, qnc121, qnc122, qnc123, qnc124, qnc125, qnc126, qnc127, qnc128};
final String[] grammarPrefixes4 = {};
final GrammarUriContext guc4 = new GrammarUriContext(4, ns4, grammarQNames4, grammarPrefixes4);
final GrammarUriContext[] grammarUriContexts = {guc0, guc1, guc2, guc3, guc4};
final GrammarContext gc = new GrammarContext(grammarUriContexts, 129);
/* END GrammarContext ----- */
/* BEGIN Grammars ----- */
com.siemens.ct.exi.grammars.grammar.Document g0 = new com.siemens.ct.exi.grammars.grammar.Document();
com.siemens.ct.exi.grammars.grammar.SchemaInformedDocContent g1 = new com.siemens.ct.exi.grammars.grammar.SchemaInformedDocContent();
com.siemens.ct.exi.grammars.grammar.DocEnd g2 = new com.siemens.ct.exi.grammars.grammar.DocEnd();
com.siemens.ct.exi.grammars.grammar.Fragment g3 = new com.siemens.ct.exi.grammars.grammar.Fragment();
com.siemens.ct.exi.grammars.grammar.SchemaInformedFragmentContent g4 = new com.siemens.ct.exi.grammars.grammar.SchemaInformedFragmentContent();
com.siemens.ct.exi.grammars.grammar.SchemaInformedFirstStartTag g5 = new com.siemens.ct.exi.grammars.grammar.SchemaInformedFirstStartTag();
com.siemens.ct.exi.grammars.grammar.SchemaInformedFirstStartTag g6 = new com.siemens.ct.exi.grammars.grammar.SchemaInformedFirstStartTag();
com.siemens.ct.exi.grammars.grammar.SchemaInformedFirstStartTag g7 = new com.siemens.ct.exi.grammars.grammar.SchemaInformedFirstStartTag();
com.siemens.ct.exi.grammars.grammar.SchemaInformedFirstStartTag g8 = new com.siemens.ct.exi.grammars.grammar.SchemaInformedFirstStartTag();
com.siemens.ct.exi.grammars.grammar.SchemaInformedFirstStartTag g9 = new com.siemens.ct.exi.grammars.grammar.SchemaInformedFirstStartTag();
com.siemens.ct.exi.grammars.grammar.SchemaInformedFirstStartTag g10 = new com.siemens.ct.exi.grammars.grammar.SchemaInformedFirstStartTag();
com.siemens.ct.exi.grammars.grammar.SchemaInformedFirstStartTag g11 = new com.siemens.ct.exi.grammars.grammar.SchemaInformedFirstStartTag();
com.siemens.ct.exi.grammars.grammar.SchemaInformedFirstStartTag g12 = new com.siemens.ct.exi.grammars.grammar.SchemaInformedFirstStartTag();
com.siemens.ct.exi.grammars.grammar.SchemaInformedFirstStartTag g13 = new com.siemens.ct.exi.grammars.grammar.SchemaInformedFirstStartTag();
com.siemens.ct.exi.grammars.grammar.SchemaInformedFirstStartTag g14 = new com.siemens.ct.exi.grammars.grammar.SchemaInformedFirstStartTag();
com.siemens.ct.exi.grammars.grammar.SchemaInformedFirstStartTag g15 = new com.siemens.ct.exi.grammars.grammar.SchemaInformedFirstStartTag();
com.siemens.ct.exi.grammars.grammar.SchemaInformedFirstStartTag g16 = new com.siemens.ct.exi.grammars.grammar.SchemaInformedFirstStartTag();
com.siemens.ct.exi.grammars.grammar.SchemaInformedFirstStartTag g17 = new com.siemens.ct.exi.grammars.grammar.SchemaInformedFirstStartTag();
com.siemens.ct.exi.grammars.grammar.SchemaInformedFirstStartTag g18 = new com.siemens.ct.exi.grammars.grammar.SchemaInformedFirstStartTag();
com.siemens.ct.exi.grammars.grammar.SchemaInformedFirstStartTag g19 = new com.siemens.ct.exi.grammars.grammar.SchemaInformedFirstStartTag();
com.siemens.ct.exi.grammars.grammar.SchemaInformedFirstStartTag g20 = new com.siemens.ct.exi.grammars.grammar.SchemaInformedFirstStartTag();
com.siemens.ct.exi.grammars.grammar.SchemaInformedFirstStartTag g21 = new com.siemens.ct.exi.grammars.grammar.SchemaInformedFirstStartTag();
com.siemens.ct.exi.grammars.grammar.SchemaInformedFirstStartTag g22 = new com.siemens.ct.exi.grammars.grammar.SchemaInformedFirstStartTag();
com.siemens.ct.exi.grammars.grammar.SchemaInformedFirstStartTag g23 = new com.siemens.ct.exi.grammars.grammar.SchemaInformedFirstStartTag();
com.siemens.ct.exi.grammars.grammar.SchemaInformedFirstStartTag g24 = new com.siemens.ct.exi.grammars.grammar.SchemaInformedFirstStartTag();
com.siemens.ct.exi.grammars.grammar.SchemaInformedFirstStartTag g25 = new com.siemens.ct.exi.grammars.grammar.SchemaInformedFirstStartTag();
com.siemens.ct.exi.grammars.grammar.SchemaInformedFirstStartTag g26 = new com.siemens.ct.exi.grammars.grammar.SchemaInformedFirstStartTag();
com.siemens.ct.exi.grammars.grammar.SchemaInformedFirstStartTag g27 = new com.siemens.ct.exi.grammars.grammar.SchemaInformedFirstStartTag();
com.siemens.ct.exi.grammars.grammar.SchemaInformedFirstStartTag g28 = new com.siemens.ct.exi.grammars.grammar.SchemaInformedFirstStartTag();
com.siemens.ct.exi.grammars.grammar.SchemaInformedFirstStartTag g29 = new com.siemens.ct.exi.grammars.grammar.SchemaInformedFirstStartTag();
com.siemens.ct.exi.grammars.grammar.SchemaInformedFirstStartTag g30 = new com.siemens.ct.exi.grammars.grammar.SchemaInformedFirstStartTag();
com.siemens.ct.exi.grammars.grammar.SchemaInformedFirstStartTag g31 = new com.siemens.ct.exi.grammars.grammar.SchemaInformedFirstStartTag();
com.siemens.ct.exi.grammars.grammar.SchemaInformedFirstStartTag g32 = new com.siemens.ct.exi.grammars.grammar.SchemaInformedFirstStartTag();
com.siemens.ct.exi.grammars.grammar.SchemaInformedFirstStartTag g33 = new com.siemens.ct.exi.grammars.grammar.SchemaInformedFirstStartTag();
com.siemens.ct.exi.grammars.grammar.SchemaInformedFirstStartTag g34 = new com.siemens.ct.exi.grammars.grammar.SchemaInformedFirstStartTag();
com.siemens.ct.exi.grammars.grammar.SchemaInformedFirstStartTag g35 = new com.siemens.ct.exi.grammars.grammar.SchemaInformedFirstStartTag();
com.siemens.ct.exi.grammars.grammar.SchemaInformedFirstStartTag g36 = new com.siemens.ct.exi.grammars.grammar.SchemaInformedFirstStartTag();
com.siemens.ct.exi.grammars.grammar.SchemaInformedFirstStartTag g37 = new com.siemens.ct.exi.grammars.grammar.SchemaInformedFirstStartTag();
com.siemens.ct.exi.grammars.grammar.SchemaInformedFirstStartTag g38 = new com.siemens.ct.exi.grammars.grammar.SchemaInformedFirstStartTag();
com.siemens.ct.exi.grammars.grammar.SchemaInformedFirstStartTag g39 = new com.siemens.ct.exi.grammars.grammar.SchemaInformedFirstStartTag();
com.siemens.ct.exi.grammars.grammar.SchemaInformedFirstStartTag g40 = new com.siemens.ct.exi.grammars.grammar.SchemaInformedFirstStartTag();
com.siemens.ct.exi.grammars.grammar.SchemaInformedFirstStartTag g41 = new com.siemens.ct.exi.grammars.grammar.SchemaInformedFirstStartTag();
com.siemens.ct.exi.grammars.grammar.SchemaInformedFirstStartTag g42 = new com.siemens.ct.exi.grammars.grammar.SchemaInformedFirstStartTag();
com.siemens.ct.exi.grammars.grammar.SchemaInformedFirstStartTag g43 = new com.siemens.ct.exi.grammars.grammar.SchemaInformedFirstStartTag();
com.siemens.ct.exi.grammars.grammar.SchemaInformedFirstStartTag g44 = new com.siemens.ct.exi.grammars.grammar.SchemaInformedFirstStartTag();
com.siemens.ct.exi.grammars.grammar.SchemaInformedFirstStartTag g45 = new com.siemens.ct.exi.grammars.grammar.SchemaInformedFirstStartTag();
com.siemens.ct.exi.grammars.grammar.SchemaInformedFirstStartTag g46 = new com.siemens.ct.exi.grammars.grammar.SchemaInformedFirstStartTag();
com.siemens.ct.exi.grammars.grammar.SchemaInformedFirstStartTag g47 = new com.siemens.ct.exi.grammars.grammar.SchemaInformedFirstStartTag();
com.siemens.ct.exi.grammars.grammar.SchemaInformedFirstStartTag g48 = new com.siemens.ct.exi.grammars.grammar.SchemaInformedFirstStartTag();
com.siemens.ct.exi.grammars.grammar.SchemaInformedStartTag g49 = new com.siemens.ct.exi.grammars.grammar.SchemaInformedStartTag();
com.siemens.ct.exi.grammars.grammar.SchemaInformedStartTag g50 = new com.siemens.ct.exi.grammars.grammar.SchemaInformedStartTag();
com.siemens.ct.exi.grammars.grammar.SchemaInformedStartTag g51 = new com.siemens.ct.exi.grammars.grammar.SchemaInformedStartTag();
com.siemens.ct.exi.grammars.grammar.SchemaInformedStartTag g52 = new com.siemens.ct.exi.grammars.grammar.SchemaInformedStartTag();
com.siemens.ct.exi.grammars.grammar.SchemaInformedStartTag g53 = new com.siemens.ct.exi.grammars.grammar.SchemaInformedStartTag();
com.siemens.ct.exi.grammars.grammar.SchemaInformedStartTag g54 = new com.siemens.ct.exi.grammars.grammar.SchemaInformedStartTag();
com.siemens.ct.exi.grammars.grammar.SchemaInformedStartTag g55 = new com.siemens.ct.exi.grammars.grammar.SchemaInformedStartTag();
com.siemens.ct.exi.grammars.grammar.SchemaInformedStartTag g56 = new com.siemens.ct.exi.grammars.grammar.SchemaInformedStartTag();
com.siemens.ct.exi.grammars.grammar.SchemaInformedStartTag g57 = new com.siemens.ct.exi.grammars.grammar.SchemaInformedStartTag();
com.siemens.ct.exi.grammars.grammar.SchemaInformedStartTag g58 = new com.siemens.ct.exi.grammars.grammar.SchemaInformedStartTag();
com.siemens.ct.exi.grammars.grammar.SchemaInformedStartTag g59 = new com.siemens.ct.exi.grammars.grammar.SchemaInformedStartTag();
com.siemens.ct.exi.grammars.grammar.SchemaInformedStartTag g60 = new com.siemens.ct.exi.grammars.grammar.SchemaInformedStartTag();
com.siemens.ct.exi.grammars.grammar.SchemaInformedStartTag g61 = new com.siemens.ct.exi.grammars.grammar.SchemaInformedStartTag();
com.siemens.ct.exi.grammars.grammar.SchemaInformedStartTag g62 = new com.siemens.ct.exi.grammars.grammar.SchemaInformedStartTag();
com.siemens.ct.exi.grammars.grammar.SchemaInformedStartTag g63 = new com.siemens.ct.exi.grammars.grammar.SchemaInformedStartTag();
com.siemens.ct.exi.grammars.grammar.SchemaInformedStartTag g64 = new com.siemens.ct.exi.grammars.grammar.SchemaInformedStartTag();
com.siemens.ct.exi.grammars.grammar.SchemaInformedStartTag g65 = new com.siemens.ct.exi.grammars.grammar.SchemaInformedStartTag();
com.siemens.ct.exi.grammars.grammar.SchemaInformedStartTag g66 = new com.siemens.ct.exi.grammars.grammar.SchemaInformedStartTag();
com.siemens.ct.exi.grammars.grammar.SchemaInformedElement g67 = new com.siemens.ct.exi.grammars.grammar.SchemaInformedElement();
com.siemens.ct.exi.grammars.grammar.SchemaInformedElement g68 = new com.siemens.ct.exi.grammars.grammar.SchemaInformedElement();
com.siemens.ct.exi.grammars.grammar.SchemaInformedElement g69 = new com.siemens.ct.exi.grammars.grammar.SchemaInformedElement();
com.siemens.ct.exi.grammars.grammar.SchemaInformedElement g70 = new com.siemens.ct.exi.grammars.grammar.SchemaInformedElement();
com.siemens.ct.exi.grammars.grammar.SchemaInformedElement g71 = new com.siemens.ct.exi.grammars.grammar.SchemaInformedElement();
com.siemens.ct.exi.grammars.grammar.SchemaInformedElement g72 = new com.siemens.ct.exi.grammars.grammar.SchemaInformedElement();
com.siemens.ct.exi.grammars.grammar.SchemaInformedElement g73 = new com.siemens.ct.exi.grammars.grammar.SchemaInformedElement();
com.siemens.ct.exi.grammars.grammar.SchemaInformedElement g74 = new com.siemens.ct.exi.grammars.grammar.SchemaInformedElement();
com.siemens.ct.exi.grammars.grammar.SchemaInformedElement g75 = new com.siemens.ct.exi.grammars.grammar.SchemaInformedElement();
com.siemens.ct.exi.grammars.grammar.SchemaInformedElement g76 = new com.siemens.ct.exi.grammars.grammar.SchemaInformedElement();
com.siemens.ct.exi.grammars.grammar.SchemaInformedElement g77 = new com.siemens.ct.exi.grammars.grammar.SchemaInformedElement();
com.siemens.ct.exi.grammars.grammar.SchemaInformedElement g78 = new com.siemens.ct.exi.grammars.grammar.SchemaInformedElement();
com.siemens.ct.exi.grammars.grammar.SchemaInformedElement g79 = new com.siemens.ct.exi.grammars.grammar.SchemaInformedElement();
com.siemens.ct.exi.grammars.grammar.SchemaInformedElement g80 = new com.siemens.ct.exi.grammars.grammar.SchemaInformedElement();
com.siemens.ct.exi.grammars.grammar.SchemaInformedElement g81 = new com.siemens.ct.exi.grammars.grammar.SchemaInformedElement();
com.siemens.ct.exi.grammars.grammar.SchemaInformedElement g82 = new com.siemens.ct.exi.grammars.grammar.SchemaInformedElement();
com.siemens.ct.exi.grammars.grammar.SchemaInformedElement g83 = new com.siemens.ct.exi.grammars.grammar.SchemaInformedElement();
com.siemens.ct.exi.grammars.grammar.SchemaInformedElement g84 = new com.siemens.ct.exi.grammars.grammar.SchemaInformedElement();
com.siemens.ct.exi.grammars.grammar.SchemaInformedElement g85 = new com.siemens.ct.exi.grammars.grammar.SchemaInformedElement();
com.siemens.ct.exi.grammars.grammar.SchemaInformedElement g86 = new com.siemens.ct.exi.grammars.grammar.SchemaInformedElement();
com.siemens.ct.exi.grammars.grammar.SchemaInformedElement g87 = new com.siemens.ct.exi.grammars.grammar.SchemaInformedElement();
com.siemens.ct.exi.grammars.grammar.SchemaInformedElement g88 = new com.siemens.ct.exi.grammars.grammar.SchemaInformedElement();
com.siemens.ct.exi.grammars.grammar.SchemaInformedElement g89 = new com.siemens.ct.exi.grammars.grammar.SchemaInformedElement();
com.siemens.ct.exi.grammars.grammar.SchemaInformedElement g90 = new com.siemens.ct.exi.grammars.grammar.SchemaInformedElement();
com.siemens.ct.exi.grammars.grammar.SchemaInformedElement g91 = new com.siemens.ct.exi.grammars.grammar.SchemaInformedElement();
com.siemens.ct.exi.grammars.grammar.SchemaInformedElement g92 = new com.siemens.ct.exi.grammars.grammar.SchemaInformedElement();
com.siemens.ct.exi.grammars.grammar.SchemaInformedElement g93 = new com.siemens.ct.exi.grammars.grammar.SchemaInformedElement();
com.siemens.ct.exi.grammars.grammar.SchemaInformedElement g94 = new com.siemens.ct.exi.grammars.grammar.SchemaInformedElement();
com.siemens.ct.exi.grammars.grammar.SchemaInformedElement g95 = new com.siemens.ct.exi.grammars.grammar.SchemaInformedElement();
com.siemens.ct.exi.grammars.grammar.SchemaInformedElement g96 = new com.siemens.ct.exi.grammars.grammar.SchemaInformedElement();
com.siemens.ct.exi.grammars.grammar.SchemaInformedElement g97 = new com.siemens.ct.exi.grammars.grammar.SchemaInformedElement();
com.siemens.ct.exi.grammars.grammar.SchemaInformedElement g98 = new com.siemens.ct.exi.grammars.grammar.SchemaInformedElement();
com.siemens.ct.exi.grammars.grammar.SchemaInformedElement g99 = new com.siemens.ct.exi.grammars.grammar.SchemaInformedElement();
com.siemens.ct.exi.grammars.grammar.SchemaInformedElement g100 = new com.siemens.ct.exi.grammars.grammar.SchemaInformedElement();
com.siemens.ct.exi.grammars.grammar.SchemaInformedElement g101 = new com.siemens.ct.exi.grammars.grammar.SchemaInformedElement();
com.siemens.ct.exi.grammars.grammar.SchemaInformedElement g102 = new com.siemens.ct.exi.grammars.grammar.SchemaInformedElement();
com.siemens.ct.exi.grammars.grammar.SchemaInformedElement g103 = new com.siemens.ct.exi.grammars.grammar.SchemaInformedElement();
com.siemens.ct.exi.grammars.grammar.SchemaInformedElement g104 = new com.siemens.ct.exi.grammars.grammar.SchemaInformedElement();
com.siemens.ct.exi.grammars.grammar.SchemaInformedElement g105 = new com.siemens.ct.exi.grammars.grammar.SchemaInformedElement();
com.siemens.ct.exi.grammars.grammar.SchemaInformedElement g106 = new com.siemens.ct.exi.grammars.grammar.SchemaInformedElement();
com.siemens.ct.exi.grammars.grammar.SchemaInformedElement g107 = new com.siemens.ct.exi.grammars.grammar.SchemaInformedElement();
com.siemens.ct.exi.grammars.grammar.SchemaInformedElement g108 = new com.siemens.ct.exi.grammars.grammar.SchemaInformedElement();
com.siemens.ct.exi.grammars.grammar.SchemaInformedElement g109 = new com.siemens.ct.exi.grammars.grammar.SchemaInformedElement();
com.siemens.ct.exi.grammars.grammar.SchemaInformedElement g110 = new com.siemens.ct.exi.grammars.grammar.SchemaInformedElement();
com.siemens.ct.exi.grammars.grammar.SchemaInformedElement g111 = new com.siemens.ct.exi.grammars.grammar.SchemaInformedElement();
com.siemens.ct.exi.grammars.grammar.SchemaInformedElement g112 = new com.siemens.ct.exi.grammars.grammar.SchemaInformedElement();
com.siemens.ct.exi.grammars.grammar.SchemaInformedElement g113 = new com.siemens.ct.exi.grammars.grammar.SchemaInformedElement();
com.siemens.ct.exi.grammars.grammar.SchemaInformedElement g114 = new com.siemens.ct.exi.grammars.grammar.SchemaInformedElement();
com.siemens.ct.exi.grammars.grammar.SchemaInformedElement g115 = new com.siemens.ct.exi.grammars.grammar.SchemaInformedElement();
com.siemens.ct.exi.grammars.grammar.SchemaInformedElement g116 = new com.siemens.ct.exi.grammars.grammar.SchemaInformedElement();
com.siemens.ct.exi.grammars.grammar.SchemaInformedElement g117 = new com.siemens.ct.exi.grammars.grammar.SchemaInformedElement();
com.siemens.ct.exi.grammars.grammar.SchemaInformedElement g118 = new com.siemens.ct.exi.grammars.grammar.SchemaInformedElement();
com.siemens.ct.exi.grammars.grammar.SchemaInformedElement g119 = new com.siemens.ct.exi.grammars.grammar.SchemaInformedElement();
com.siemens.ct.exi.grammars.grammar.SchemaInformedElement g120 = new com.siemens.ct.exi.grammars.grammar.SchemaInformedElement();
com.siemens.ct.exi.grammars.grammar.SchemaInformedElement g121 = new com.siemens.ct.exi.grammars.grammar.SchemaInformedElement();
com.siemens.ct.exi.grammars.grammar.SchemaInformedElement g122 = new com.siemens.ct.exi.grammars.grammar.SchemaInformedElement();
com.siemens.ct.exi.grammars.grammar.SchemaInformedElement g123 = new com.siemens.ct.exi.grammars.grammar.SchemaInformedElement();
com.siemens.ct.exi.grammars.grammar.SchemaInformedElement g124 = new com.siemens.ct.exi.grammars.grammar.SchemaInformedElement();
com.siemens.ct.exi.grammars.grammar.SchemaInformedElement g125 = new com.siemens.ct.exi.grammars.grammar.SchemaInformedElement();
com.siemens.ct.exi.grammars.grammar.SchemaInformedElement g126 = new com.siemens.ct.exi.grammars.grammar.SchemaInformedElement();
com.siemens.ct.exi.grammars.grammar.SchemaInformedElement g127 = new com.siemens.ct.exi.grammars.grammar.SchemaInformedElement();
com.siemens.ct.exi.grammars.grammar.SchemaInformedElement g128 = new com.siemens.ct.exi.grammars.grammar.SchemaInformedElement();
com.siemens.ct.exi.grammars.grammar.SchemaInformedElement g129 = new com.siemens.ct.exi.grammars.grammar.SchemaInformedElement();
com.siemens.ct.exi.grammars.grammar.SchemaInformedElement g130 = new com.siemens.ct.exi.grammars.grammar.SchemaInformedElement();
/* END Grammars ----- */
com.siemens.ct.exi.grammars.event.StartElement globalSE59 = new com.siemens.ct.exi.grammars.event.StartElement(qnc59, g5);
com.siemens.ct.exi.grammars.event.StartElement globalSE62 = new com.siemens.ct.exi.grammars.event.StartElement(qnc62, g6);
com.siemens.ct.exi.grammars.event.StartElement globalSE64 = new com.siemens.ct.exi.grammars.event.StartElement(qnc64, g5);
com.siemens.ct.exi.grammars.event.StartElement globalSE66 = new com.siemens.ct.exi.grammars.event.StartElement(qnc66, g7);
com.siemens.ct.exi.grammars.event.StartElement globalSE73 = new com.siemens.ct.exi.grammars.event.StartElement(qnc73, g8);
com.siemens.ct.exi.grammars.event.StartElement globalSE75 = new com.siemens.ct.exi.grammars.event.StartElement(qnc75, g9);
com.siemens.ct.exi.grammars.event.StartElement globalSE76 = new com.siemens.ct.exi.grammars.event.StartElement(qnc76, g10);
com.siemens.ct.exi.grammars.event.StartElement globalSE78 = new com.siemens.ct.exi.grammars.event.StartElement(qnc78, g21);
com.siemens.ct.exi.grammars.event.StartElement globalSE80 = new com.siemens.ct.exi.grammars.event.StartElement(qnc80, g9);
com.siemens.ct.exi.grammars.event.StartElement globalSE82 = new com.siemens.ct.exi.grammars.event.StartElement(qnc82, g23);
com.siemens.ct.exi.grammars.event.StartElement globalSE85 = new com.siemens.ct.exi.grammars.event.StartElement(qnc85, g19);
com.siemens.ct.exi.grammars.event.StartElement globalSE91 = new com.siemens.ct.exi.grammars.event.StartElement(qnc91, g11);
com.siemens.ct.exi.grammars.event.StartElement globalSE93 = new com.siemens.ct.exi.grammars.event.StartElement(qnc93, g22);
com.siemens.ct.exi.grammars.event.StartElement globalSE95 = new com.siemens.ct.exi.grammars.event.StartElement(qnc95, g12);
com.siemens.ct.exi.grammars.event.StartElement globalSE97 = new com.siemens.ct.exi.grammars.event.StartElement(qnc97, g20);
com.siemens.ct.exi.grammars.event.StartElement globalSE101 = new com.siemens.ct.exi.grammars.event.StartElement(qnc101, g24);
com.siemens.ct.exi.grammars.event.StartElement globalSE102 = new com.siemens.ct.exi.grammars.event.StartElement(qnc102, g26);
com.siemens.ct.exi.grammars.event.StartElement globalSE104 = new com.siemens.ct.exi.grammars.event.StartElement(qnc104, g29);
com.siemens.ct.exi.grammars.event.StartElement globalSE106 = new com.siemens.ct.exi.grammars.event.StartElement(qnc106, g30);
com.siemens.ct.exi.grammars.event.StartElement globalSE109 = new com.siemens.ct.exi.grammars.event.StartElement(qnc109, g28);
com.siemens.ct.exi.grammars.event.StartElement globalSE111 = new com.siemens.ct.exi.grammars.event.StartElement(qnc111, g25);
com.siemens.ct.exi.grammars.event.StartElement globalSE113 = new com.siemens.ct.exi.grammars.event.StartElement(qnc113, g14);
com.siemens.ct.exi.grammars.event.StartElement globalSE115 = new com.siemens.ct.exi.grammars.event.StartElement(qnc115, g13);
com.siemens.ct.exi.grammars.event.StartElement globalSE119 = new com.siemens.ct.exi.grammars.event.StartElement(qnc119, g15);
protected String schemaId;
void initGlobalElements() {
/* BEGIN GlobalElements ----- */
qnc59.setGlobalStartElement(globalSE59);
qnc62.setGlobalStartElement(globalSE62);
qnc64.setGlobalStartElement(globalSE64);
qnc66.setGlobalStartElement(globalSE66);
qnc73.setGlobalStartElement(globalSE73);
qnc75.setGlobalStartElement(globalSE75);
qnc76.setGlobalStartElement(globalSE76);
qnc78.setGlobalStartElement(globalSE78);
qnc80.setGlobalStartElement(globalSE80);
qnc82.setGlobalStartElement(globalSE82);
qnc85.setGlobalStartElement(globalSE85);
qnc91.setGlobalStartElement(globalSE91);
qnc93.setGlobalStartElement(globalSE93);
qnc95.setGlobalStartElement(globalSE95);
qnc97.setGlobalStartElement(globalSE97);
qnc101.setGlobalStartElement(globalSE101);
qnc102.setGlobalStartElement(globalSE102);
qnc104.setGlobalStartElement(globalSE104);
qnc106.setGlobalStartElement(globalSE106);
qnc109.setGlobalStartElement(globalSE109);
qnc111.setGlobalStartElement(globalSE111);
qnc113.setGlobalStartElement(globalSE113);
qnc115.setGlobalStartElement(globalSE115);
qnc119.setGlobalStartElement(globalSE119);
/* END GlobalElements ----- */
}
void initGlobalAttributes() {
/* BEGIN GlobalAttributes ----- */
/* END GlobalAttributes ----- */
}
void initTypeGrammars() {
/* BEGIN TypeGrammar ----- */
qnc13.setTypeGrammar(g31);
qnc14.setTypeGrammar(g32);
qnc15.setTypeGrammar(g32);
qnc16.setTypeGrammar(g32);
qnc17.setTypeGrammar(g31);
qnc18.setTypeGrammar(g32);
qnc19.setTypeGrammar(g32);
qnc20.setTypeGrammar(g31);
qnc21.setTypeGrammar(g32);
qnc22.setTypeGrammar(g32);
qnc23.setTypeGrammar(g32);
qnc24.setTypeGrammar(g32);
qnc25.setTypeGrammar(g33);
qnc26.setTypeGrammar(g32);
qnc27.setTypeGrammar(g7);
qnc28.setTypeGrammar(g34);
qnc29.setTypeGrammar(g35);
qnc30.setTypeGrammar(g36);
qnc31.setTypeGrammar(g37);
qnc32.setTypeGrammar(g38);
qnc33.setTypeGrammar(g39);
qnc34.setTypeGrammar(g32);
qnc35.setTypeGrammar(g39);
qnc36.setTypeGrammar(g40);
qnc37.setTypeGrammar(g41);
qnc38.setTypeGrammar(g42);
qnc39.setTypeGrammar(g43);
qnc40.setTypeGrammar(g44);
qnc41.setTypeGrammar(g45);
qnc42.setTypeGrammar(g27);
qnc43.setTypeGrammar(g27);
qnc44.setTypeGrammar(g32);
qnc45.setTypeGrammar(g27);
qnc46.setTypeGrammar(g27);
qnc47.setTypeGrammar(g46);
qnc48.setTypeGrammar(g27);
qnc49.setTypeGrammar(g32);
qnc50.setTypeGrammar(g46);
qnc51.setTypeGrammar(g27);
qnc52.setTypeGrammar(g32);
qnc53.setTypeGrammar(g47);
qnc54.setTypeGrammar(g32);
qnc55.setTypeGrammar(g48);
qnc56.setTypeGrammar(g46);
qnc57.setTypeGrammar(g46);
qnc58.setTypeGrammar(g46);
qnc60.setTypeGrammar(g5);
qnc61.setTypeGrammar(g7);
qnc63.setTypeGrammar(g6);
qnc65.setTypeGrammar(g5);
qnc67.setTypeGrammar(g7);
qnc71.setTypeGrammar(g27);
qnc74.setTypeGrammar(g8);
qnc77.setTypeGrammar(g10);
qnc79.setTypeGrammar(g21);
qnc83.setTypeGrammar(g23);
qnc86.setTypeGrammar(g19);
qnc92.setTypeGrammar(g11);
qnc94.setTypeGrammar(g22);
qnc96.setTypeGrammar(g12);
qnc98.setTypeGrammar(g20);
qnc103.setTypeGrammar(g26);
qnc105.setTypeGrammar(g29);
qnc107.setTypeGrammar(g30);
qnc108.setTypeGrammar(g24);
qnc110.setTypeGrammar(g28);
qnc112.setTypeGrammar(g25);
qnc114.setTypeGrammar(g14);
qnc116.setTypeGrammar(g13);
qnc120.setTypeGrammar(g15);
qnc123.setTypeGrammar(g16);
/* END TypeGrammar ----- */
}
void initGrammarEvents() {
/* BEGIN Grammar Events ----- */
g0.addProduction(new com.siemens.ct.exi.grammars.event.StartDocument(), g1);
g1.addProduction(globalSE59, g2);
g1.addProduction(globalSE62, g2);
g1.addProduction(globalSE64, g2);
g1.addProduction(globalSE66, g2);
g1.addProduction(globalSE73, g2);
g1.addProduction(globalSE75, g2);
g1.addProduction(globalSE76, g2);
g1.addProduction(globalSE78, g2);
g1.addProduction(globalSE80, g2);
g1.addProduction(globalSE82, g2);
g1.addProduction(globalSE85, g2);
g1.addProduction(globalSE91, g2);
g1.addProduction(globalSE93, g2);
g1.addProduction(globalSE95, g2);
g1.addProduction(globalSE97, g2);
g1.addProduction(globalSE101, g2);
g1.addProduction(globalSE102, g2);
g1.addProduction(globalSE104, g2);
g1.addProduction(globalSE106, g2);
g1.addProduction(globalSE109, g2);
g1.addProduction(globalSE111, g2);
g1.addProduction(globalSE113, g2);
g1.addProduction(globalSE115, g2);
g1.addProduction(globalSE119, g2);
g1.addProduction(new com.siemens.ct.exi.grammars.event.StartElementGeneric(), g2);
g2.addProduction(new com.siemens.ct.exi.grammars.event.EndDocument(), g68);
g3.addProduction(new com.siemens.ct.exi.grammars.event.StartDocument(), g4);
g4.addProduction(globalSE59, g4);
g4.addProduction(globalSE62, g4);
g4.addProduction(globalSE64, g4);
g4.addProduction(globalSE66, g4);
g4.addProduction(new com.siemens.ct.exi.grammars.event.StartElement(qnc68, g7), g4);
g4.addProduction(new com.siemens.ct.exi.grammars.event.StartElement(qnc69, g7), g4);
g4.addProduction(new com.siemens.ct.exi.grammars.event.StartElement(qnc70, g27), g4);
g4.addProduction(new com.siemens.ct.exi.grammars.event.StartElement(qnc72, g7), g4);
g4.addProduction(globalSE73, g4);
g4.addProduction(globalSE75, g4);
g4.addProduction(globalSE76, g4);
g4.addProduction(globalSE78, g4);
g4.addProduction(globalSE80, g4);
g4.addProduction(new com.siemens.ct.exi.grammars.event.StartElement(qnc81, g7), g4);
g4.addProduction(globalSE82, g4);
g4.addProduction(new com.siemens.ct.exi.grammars.event.StartElement(qnc84, g7), g4);
g4.addProduction(globalSE85, g4);
g4.addProduction(new com.siemens.ct.exi.grammars.event.StartElement(qnc87, g18), g4);
g4.addProduction(new com.siemens.ct.exi.grammars.event.StartElement(qnc88, g18), g4);
g4.addProduction(new com.siemens.ct.exi.grammars.event.StartElement(qnc89, g7), g4);
g4.addProduction(new com.siemens.ct.exi.grammars.event.StartElement(qnc90, g7), g4);
g4.addProduction(globalSE91, g4);
g4.addProduction(globalSE93, g4);
g4.addProduction(globalSE95, g4);
g4.addProduction(globalSE97, g4);
g4.addProduction(new com.siemens.ct.exi.grammars.event.StartElement(qnc99, g18), g4);
g4.addProduction(new com.siemens.ct.exi.grammars.event.StartElement(qnc100, g7), g4);
g4.addProduction(globalSE101, g4);
g4.addProduction(globalSE102, g4);
g4.addProduction(globalSE104, g4);
g4.addProduction(globalSE106, g4);
g4.addProduction(globalSE109, g4);
g4.addProduction(globalSE111, g4);
g4.addProduction(globalSE113, g4);
g4.addProduction(globalSE115, g4);
g4.addProduction(new com.siemens.ct.exi.grammars.event.StartElement(qnc117, g18), g4);
g4.addProduction(new com.siemens.ct.exi.grammars.event.StartElement(qnc118, g18), g4);
g4.addProduction(globalSE119, g4);
g4.addProduction(new com.siemens.ct.exi.grammars.event.StartElement(qnc121, g9), g4);
g4.addProduction(new com.siemens.ct.exi.grammars.event.StartElement(qnc122, g16), g4);
g4.addProduction(new com.siemens.ct.exi.grammars.event.StartElement(qnc124, g18), g4);
g4.addProduction(new com.siemens.ct.exi.grammars.event.StartElement(qnc125, g17), g4);
g4.addProduction(new com.siemens.ct.exi.grammars.event.StartElement(qnc126, g9), g4);
g4.addProduction(new com.siemens.ct.exi.grammars.event.StartElement(qnc127, g9), g4);
g4.addProduction(new com.siemens.ct.exi.grammars.event.StartElement(qnc128, g7), g4);
g4.addProduction(new com.siemens.ct.exi.grammars.event.StartElementGeneric(), g4);
g4.addProduction(new com.siemens.ct.exi.grammars.event.EndDocument(), g68);
g5.addProduction(new com.siemens.ct.exi.grammars.event.Attribute(qnc0, new com.siemens.ct.exi.datatype.StringDatatype(qnc26)), g49);
g6.addProduction(new com.siemens.ct.exi.grammars.event.StartElement(qnc84, g7), g71);
g6.addProduction(new com.siemens.ct.exi.grammars.event.StartElement(qnc69, g7), g73);
g6.addProduction(new com.siemens.ct.exi.grammars.event.StartElement(qnc128, g7), g74);
g7.addProduction(new com.siemens.ct.exi.grammars.event.Characters(new com.siemens.ct.exi.datatype.BinaryBase64Datatype(qnc61)), g69);
g8.addProduction(new com.siemens.ct.exi.grammars.event.Attribute(qnc2, new com.siemens.ct.exi.datatype.StringDatatype(qnc15)), g50);
g8.addProduction(globalSE75, g79);
g8.addProduction(globalSE76, g79);
g8.addProduction(globalSE95, g79);
g8.addProduction(globalSE119, g79);
g8.addProduction(globalSE85, g79);
g8.addProduction(globalSE97, g79);
g8.addProduction(globalSE80, g79);
g8.addProduction(new com.siemens.ct.exi.grammars.event.StartElementGeneric(), g79);
g8.addProduction(new com.siemens.ct.exi.grammars.event.CharactersGeneric(), g99);
g9.addProduction(new com.siemens.ct.exi.grammars.event.Characters(new com.siemens.ct.exi.datatype.StringDatatype(qnc52)), g69);
g10.addProduction(globalSE62, g80);
g10.addProduction(globalSE91, g80);
g10.addProduction(new com.siemens.ct.exi.grammars.event.StartElementGeneric(), g80);
g10.addProduction(new com.siemens.ct.exi.grammars.event.CharactersGeneric(), g83);
g11.addProduction(new com.siemens.ct.exi.grammars.event.StartElement(qnc81, g7), g81);
g12.addProduction(new com.siemens.ct.exi.grammars.event.Attribute(qnc5, new com.siemens.ct.exi.datatype.StringDatatype(qnc26)), g51);
g12.addProduction(new com.siemens.ct.exi.grammars.event.Attribute(qnc6, new com.siemens.ct.exi.datatype.StringDatatype(qnc26)), g52);
g12.addProduction(globalSE115, g69);
g12.addProduction(new com.siemens.ct.exi.grammars.event.EndElement(), g68);
g13.addProduction(globalSE113, g85);
g14.addProduction(new com.siemens.ct.exi.grammars.event.Attribute(qnc0, new com.siemens.ct.exi.datatype.StringDatatype(qnc26)), g53);
g15.addProduction(new com.siemens.ct.exi.grammars.event.StartElement(qnc122, g16), g91);
g15.addProduction(new com.siemens.ct.exi.grammars.event.StartElement(qnc124, g18), g91);
g15.addProduction(new com.siemens.ct.exi.grammars.event.StartElement(qnc126, g9), g91);
g15.addProduction(new com.siemens.ct.exi.grammars.event.StartElement(qnc118, g18), g91);
g15.addProduction(new com.siemens.ct.exi.grammars.event.StartElement(qnc117, g18), g91);
g15.addProduction(new com.siemens.ct.exi.grammars.event.StartElementGeneric(), g91);
g16.addProduction(new com.siemens.ct.exi.grammars.event.StartElement(qnc121, g9), g88);
g17.addProduction(new com.siemens.ct.exi.grammars.event.Characters(new com.siemens.ct.exi.datatype.IntegerDatatype(qnc43)), g69);
g18.addProduction(new com.siemens.ct.exi.grammars.event.Characters(new com.siemens.ct.exi.datatype.BinaryBase64Datatype(qnc27)), g69);
g19.addProduction(new com.siemens.ct.exi.grammars.event.StartElement(qnc87, g18), g93);
g19.addProduction(new com.siemens.ct.exi.grammars.event.StartElement(qnc88, g18), g94);
g20.addProduction(new com.siemens.ct.exi.grammars.event.StartElement(qnc99, g18), g96);
g21.addProduction(new com.siemens.ct.exi.grammars.event.Attribute(qnc2, new com.siemens.ct.exi.datatype.StringDatatype(qnc15)), g54);
g21.addProduction(globalSE93, g103);
g22.addProduction(new com.siemens.ct.exi.grammars.event.Attribute(qnc2, new com.siemens.ct.exi.datatype.StringDatatype(qnc15)), g55);
g22.addProduction(new com.siemens.ct.exi.grammars.event.Attribute(qnc5, new com.siemens.ct.exi.datatype.StringDatatype(qnc26)), g56);
g22.addProduction(new com.siemens.ct.exi.grammars.event.Attribute(qnc6, new com.siemens.ct.exi.datatype.StringDatatype(qnc26)), g57);
g22.addProduction(globalSE115, g100);
g22.addProduction(globalSE64, g101);
g23.addProduction(new com.siemens.ct.exi.grammars.event.Attribute(qnc1, new com.siemens.ct.exi.datatype.StringDatatype(qnc26)), g58);
g23.addProduction(new com.siemens.ct.exi.grammars.event.Attribute(qnc2, new com.siemens.ct.exi.datatype.StringDatatype(qnc15)), g59);
g23.addProduction(new com.siemens.ct.exi.grammars.event.Attribute(qnc3, new com.siemens.ct.exi.datatype.StringDatatype(qnc52)), g49);
g23.addProduction(new com.siemens.ct.exi.grammars.event.StartElementGeneric(), g67);
g23.addProduction(new com.siemens.ct.exi.grammars.event.EndElement(), g68);
g23.addProduction(new com.siemens.ct.exi.grammars.event.CharactersGeneric(), g67);
g24.addProduction(new com.siemens.ct.exi.grammars.event.Attribute(qnc2, new com.siemens.ct.exi.datatype.StringDatatype(qnc15)), g60);
g24.addProduction(globalSE111, g108);
g25.addProduction(new com.siemens.ct.exi.grammars.event.Attribute(qnc2, new com.siemens.ct.exi.datatype.StringDatatype(qnc15)), g61);
g25.addProduction(globalSE59, g105);
g26.addProduction(new com.siemens.ct.exi.grammars.event.Attribute(qnc0, new com.siemens.ct.exi.datatype.StringDatatype(qnc26)), g62);
g27.addProduction(new com.siemens.ct.exi.grammars.event.Characters(new com.siemens.ct.exi.datatype.IntegerDatatype(qnc71)), g69);
g28.addProduction(new com.siemens.ct.exi.grammars.event.Attribute(qnc2, new com.siemens.ct.exi.datatype.StringDatatype(qnc15)), g63);
g28.addProduction(new com.siemens.ct.exi.grammars.event.Characters(new com.siemens.ct.exi.datatype.BinaryBase64Datatype(qnc27)), g69);
g29.addProduction(new com.siemens.ct.exi.grammars.event.Attribute(qnc2, new com.siemens.ct.exi.datatype.StringDatatype(qnc15)), g64);
g29.addProduction(globalSE106, g113);
g30.addProduction(new com.siemens.ct.exi.grammars.event.Attribute(qnc2, new com.siemens.ct.exi.datatype.StringDatatype(qnc15)), g65);
g30.addProduction(new com.siemens.ct.exi.grammars.event.Attribute(qnc4, new com.siemens.ct.exi.datatype.StringDatatype(qnc26)), g66);
g31.addProduction(new com.siemens.ct.exi.grammars.event.Characters(new com.siemens.ct.exi.datatype.ListDatatype(new com.siemens.ct.exi.datatype.StringDatatype(qnc14), qnc13)), g69);
g32.addProduction(new com.siemens.ct.exi.grammars.event.Characters(new com.siemens.ct.exi.datatype.StringDatatype(qnc14)), g69);
g33.addProduction(new com.siemens.ct.exi.grammars.event.AttributeGeneric(), g33);
g33.addProduction(new com.siemens.ct.exi.grammars.event.StartElementGeneric(), g67);
g33.addProduction(new com.siemens.ct.exi.grammars.event.EndElement(), g68);
g33.addProduction(new com.siemens.ct.exi.grammars.event.CharactersGeneric(), g67);
g34.addProduction(new com.siemens.ct.exi.grammars.event.Characters(new com.siemens.ct.exi.datatype.BooleanDatatype(qnc28)), g69);
g35.addProduction(new com.siemens.ct.exi.grammars.event.Characters(new com.siemens.ct.exi.datatype.NBitUnsignedIntegerDatatype(com.siemens.ct.exi.values.IntegerValue.valueOf(-128), com.siemens.ct.exi.values.IntegerValue.valueOf(127), qnc29)), g69);
g36.addProduction(new com.siemens.ct.exi.grammars.event.Characters(new com.siemens.ct.exi.datatype.DatetimeDatatype(com.siemens.ct.exi.types.DateTimeType.date, qnc30)), g69);
g37.addProduction(new com.siemens.ct.exi.grammars.event.Characters(new com.siemens.ct.exi.datatype.DatetimeDatatype(com.siemens.ct.exi.types.DateTimeType.dateTime, qnc31)), g69);
g38.addProduction(new com.siemens.ct.exi.grammars.event.Characters(new com.siemens.ct.exi.datatype.DecimalDatatype(qnc32)), g69);
g39.addProduction(new com.siemens.ct.exi.grammars.event.Characters(new com.siemens.ct.exi.datatype.FloatDatatype(qnc33)), g69);
g40.addProduction(new com.siemens.ct.exi.grammars.event.Characters(new com.siemens.ct.exi.datatype.DatetimeDatatype(com.siemens.ct.exi.types.DateTimeType.gDay, qnc36)), g69);
g41.addProduction(new com.siemens.ct.exi.grammars.event.Characters(new com.siemens.ct.exi.datatype.DatetimeDatatype(com.siemens.ct.exi.types.DateTimeType.gMonth, qnc37)), g69);
g42.addProduction(new com.siemens.ct.exi.grammars.event.Characters(new com.siemens.ct.exi.datatype.DatetimeDatatype(com.siemens.ct.exi.types.DateTimeType.gMonthDay, qnc38)), g69);
g43.addProduction(new com.siemens.ct.exi.grammars.event.Characters(new com.siemens.ct.exi.datatype.DatetimeDatatype(com.siemens.ct.exi.types.DateTimeType.gYear, qnc39)), g69);
g44.addProduction(new com.siemens.ct.exi.grammars.event.Characters(new com.siemens.ct.exi.datatype.DatetimeDatatype(com.siemens.ct.exi.types.DateTimeType.gYearMonth, qnc40)), g69);
g45.addProduction(new com.siemens.ct.exi.grammars.event.Characters(new com.siemens.ct.exi.datatype.BinaryHexDatatype(qnc41)), g69);
g46.addProduction(new com.siemens.ct.exi.grammars.event.Characters(new com.siemens.ct.exi.datatype.UnsignedIntegerDatatype(qnc47)), g69);
g47.addProduction(new com.siemens.ct.exi.grammars.event.Characters(new com.siemens.ct.exi.datatype.DatetimeDatatype(com.siemens.ct.exi.types.DateTimeType.time, qnc53)), g69);
g48.addProduction(new com.siemens.ct.exi.grammars.event.Characters(new com.siemens.ct.exi.datatype.NBitUnsignedIntegerDatatype(com.siemens.ct.exi.values.IntegerValue.valueOf(0), com.siemens.ct.exi.values.IntegerValue.valueOf(255), qnc55)), g69);
g49.addProduction(new com.siemens.ct.exi.grammars.event.StartElementGeneric(), g67);
g49.addProduction(new com.siemens.ct.exi.grammars.event.EndElement(), g68);
g49.addProduction(new com.siemens.ct.exi.grammars.event.CharactersGeneric(), g67);
g50.addProduction(globalSE75, g79);
g50.addProduction(globalSE76, g79);
g50.addProduction(globalSE95, g79);
g50.addProduction(globalSE119, g79);
g50.addProduction(globalSE85, g79);
g50.addProduction(globalSE97, g79);
g50.addProduction(globalSE80, g79);
g50.addProduction(new com.siemens.ct.exi.grammars.event.StartElementGeneric(), g79);
g50.addProduction(new com.siemens.ct.exi.grammars.event.CharactersGeneric(), g99);
g51.addProduction(new com.siemens.ct.exi.grammars.event.Attribute(qnc6, new com.siemens.ct.exi.datatype.StringDatatype(qnc26)), g52);
g51.addProduction(globalSE115, g69);
g51.addProduction(new com.siemens.ct.exi.grammars.event.EndElement(), g68);
g52.addProduction(globalSE115, g69);
g52.addProduction(new com.siemens.ct.exi.grammars.event.EndElement(), g68);
g53.addProduction(new com.siemens.ct.exi.grammars.event.StartElement(qnc127, g9), g84);
g53.addProduction(new com.siemens.ct.exi.grammars.event.StartElementGeneric(), g84);
g53.addProduction(new com.siemens.ct.exi.grammars.event.EndElement(), g68);
g53.addProduction(new com.siemens.ct.exi.grammars.event.CharactersGeneric(), g84);
g54.addProduction(globalSE93, g103);
g55.addProduction(new com.siemens.ct.exi.grammars.event.Attribute(qnc5, new com.siemens.ct.exi.datatype.StringDatatype(qnc26)), g56);
g55.addProduction(new com.siemens.ct.exi.grammars.event.Attribute(qnc6, new com.siemens.ct.exi.datatype.StringDatatype(qnc26)), g57);
g55.addProduction(globalSE115, g100);
g55.addProduction(globalSE64, g101);
g56.addProduction(new com.siemens.ct.exi.grammars.event.Attribute(qnc6, new com.siemens.ct.exi.datatype.StringDatatype(qnc26)), g57);
g56.addProduction(globalSE115, g100);
g56.addProduction(globalSE64, g101);
g57.addProduction(globalSE115, g100);
g57.addProduction(globalSE64, g101);
g58.addProduction(new com.siemens.ct.exi.grammars.event.Attribute(qnc2, new com.siemens.ct.exi.datatype.StringDatatype(qnc15)), g59);
g58.addProduction(new com.siemens.ct.exi.grammars.event.Attribute(qnc3, new com.siemens.ct.exi.datatype.StringDatatype(qnc52)), g49);
g58.addProduction(new com.siemens.ct.exi.grammars.event.StartElementGeneric(), g67);
g58.addProduction(new com.siemens.ct.exi.grammars.event.EndElement(), g68);
g58.addProduction(new com.siemens.ct.exi.grammars.event.CharactersGeneric(), g67);
g59.addProduction(new com.siemens.ct.exi.grammars.event.Attribute(qnc3, new com.siemens.ct.exi.datatype.StringDatatype(qnc52)), g49);
g59.addProduction(new com.siemens.ct.exi.grammars.event.StartElementGeneric(), g67);
g59.addProduction(new com.siemens.ct.exi.grammars.event.EndElement(), g68);
g59.addProduction(new com.siemens.ct.exi.grammars.event.CharactersGeneric(), g67);
g60.addProduction(globalSE111, g108);
g61.addProduction(globalSE59, g105);
g62.addProduction(new com.siemens.ct.exi.grammars.event.StartElement(qnc70, g27), g67);
g62.addProduction(new com.siemens.ct.exi.grammars.event.StartElementGeneric(), g67);
g62.addProduction(new com.siemens.ct.exi.grammars.event.EndElement(), g68);
g62.addProduction(new com.siemens.ct.exi.grammars.event.CharactersGeneric(), g106);
g63.addProduction(new com.siemens.ct.exi.grammars.event.Characters(new com.siemens.ct.exi.datatype.BinaryBase64Datatype(qnc27)), g69);
g64.addProduction(globalSE106, g113);
g65.addProduction(new com.siemens.ct.exi.grammars.event.Attribute(qnc4, new com.siemens.ct.exi.datatype.StringDatatype(qnc26)), g66);
g66.addProduction(new com.siemens.ct.exi.grammars.event.StartElementGeneric(), g67);
g66.addProduction(new com.siemens.ct.exi.grammars.event.CharactersGeneric(), g112);
g67.addProduction(new com.siemens.ct.exi.grammars.event.StartElementGeneric(), g67);
g67.addProduction(new com.siemens.ct.exi.grammars.event.EndElement(), g68);
g67.addProduction(new com.siemens.ct.exi.grammars.event.CharactersGeneric(), g67);
g69.addProduction(new com.siemens.ct.exi.grammars.event.EndElement(), g68);
g70.addProduction(new com.siemens.ct.exi.grammars.event.Characters(new com.siemens.ct.exi.datatype.BinaryBase64Datatype(qnc61)), g69);
g71.addProduction(new com.siemens.ct.exi.grammars.event.StartElement(qnc90, g7), g72);
g72.addProduction(new com.siemens.ct.exi.grammars.event.StartElement(qnc69, g7), g73);
g72.addProduction(new com.siemens.ct.exi.grammars.event.StartElement(qnc128, g7), g74);
g73.addProduction(new com.siemens.ct.exi.grammars.event.StartElement(qnc128, g7), g74);
g74.addProduction(new com.siemens.ct.exi.grammars.event.StartElement(qnc72, g7), g75);
g74.addProduction(new com.siemens.ct.exi.grammars.event.StartElement(qnc100, g7), g76);
g74.addProduction(new com.siemens.ct.exi.grammars.event.EndElement(), g68);
g75.addProduction(new com.siemens.ct.exi.grammars.event.StartElement(qnc100, g7), g76);
g75.addProduction(new com.siemens.ct.exi.grammars.event.EndElement(), g68);
g76.addProduction(new com.siemens.ct.exi.grammars.event.StartElement(qnc89, g7), g69);
g77.addProduction(new com.siemens.ct.exi.grammars.event.StartElement(qnc84, g7), g71);
g77.addProduction(new com.siemens.ct.exi.grammars.event.StartElement(qnc69, g7), g73);
g77.addProduction(new com.siemens.ct.exi.grammars.event.StartElement(qnc128, g7), g74);
g78.addProduction(new com.siemens.ct.exi.grammars.event.Characters(new com.siemens.ct.exi.datatype.StringDatatype(qnc52)), g69);
g79.addProduction(globalSE75, g79);
g79.addProduction(globalSE76, g79);
g79.addProduction(globalSE95, g79);
g79.addProduction(globalSE119, g79);
g79.addProduction(globalSE85, g79);
g79.addProduction(globalSE97, g79);
g79.addProduction(globalSE80, g79);
g79.addProduction(new com.siemens.ct.exi.grammars.event.StartElementGeneric(), g79);
g79.addProduction(new com.siemens.ct.exi.grammars.event.EndElement(), g68);
g79.addProduction(new com.siemens.ct.exi.grammars.event.CharactersGeneric(), g79);
g80.addProduction(new com.siemens.ct.exi.grammars.event.EndElement(), g68);
g80.addProduction(new com.siemens.ct.exi.grammars.event.CharactersGeneric(), g80);
g81.addProduction(new com.siemens.ct.exi.grammars.event.StartElement(qnc68, g7), g69);
g82.addProduction(new com.siemens.ct.exi.grammars.event.StartElement(qnc81, g7), g81);
g83.addProduction(globalSE62, g80);
g83.addProduction(globalSE91, g80);
g83.addProduction(new com.siemens.ct.exi.grammars.event.StartElementGeneric(), g80);
g83.addProduction(new com.siemens.ct.exi.grammars.event.CharactersGeneric(), g83);
g84.addProduction(new com.siemens.ct.exi.grammars.event.StartElement(qnc127, g9), g84);
g84.addProduction(new com.siemens.ct.exi.grammars.event.StartElementGeneric(), g84);
g84.addProduction(new com.siemens.ct.exi.grammars.event.EndElement(), g68);
g84.addProduction(new com.siemens.ct.exi.grammars.event.CharactersGeneric(), g84);
g85.addProduction(globalSE113, g85);
g85.addProduction(new com.siemens.ct.exi.grammars.event.EndElement(), g68);
g86.addProduction(globalSE113, g85);
g87.addProduction(globalSE115, g69);
g87.addProduction(new com.siemens.ct.exi.grammars.event.EndElement(), g68);
g88.addProduction(new com.siemens.ct.exi.grammars.event.StartElement(qnc125, g17), g69);
g89.addProduction(new com.siemens.ct.exi.grammars.event.Characters(new com.siemens.ct.exi.datatype.IntegerDatatype(qnc43)), g69);
g90.addProduction(new com.siemens.ct.exi.grammars.event.StartElement(qnc121, g9), g88);
g91.addProduction(new com.siemens.ct.exi.grammars.event.StartElement(qnc122, g16), g91);
g91.addProduction(new com.siemens.ct.exi.grammars.event.StartElement(qnc124, g18), g91);
g91.addProduction(new com.siemens.ct.exi.grammars.event.StartElement(qnc126, g9), g91);
g91.addProduction(new com.siemens.ct.exi.grammars.event.StartElement(qnc118, g18), g91);
g91.addProduction(new com.siemens.ct.exi.grammars.event.StartElement(qnc117, g18), g91);
g91.addProduction(new com.siemens.ct.exi.grammars.event.StartElementGeneric(), g91);
g91.addProduction(new com.siemens.ct.exi.grammars.event.EndElement(), g68);
g92.addProduction(new com.siemens.ct.exi.grammars.event.StartElement(qnc122, g16), g91);
g92.addProduction(new com.siemens.ct.exi.grammars.event.StartElement(qnc124, g18), g91);
g92.addProduction(new com.siemens.ct.exi.grammars.event.StartElement(qnc126, g9), g91);
g92.addProduction(new com.siemens.ct.exi.grammars.event.StartElement(qnc118, g18), g91);
g92.addProduction(new com.siemens.ct.exi.grammars.event.StartElement(qnc117, g18), g91);
g92.addProduction(new com.siemens.ct.exi.grammars.event.StartElementGeneric(), g91);
g93.addProduction(new com.siemens.ct.exi.grammars.event.StartElement(qnc88, g18), g94);
g93.addProduction(new com.siemens.ct.exi.grammars.event.StartElementGeneric(), g94);
g93.addProduction(new com.siemens.ct.exi.grammars.event.EndElement(), g68);
g94.addProduction(new com.siemens.ct.exi.grammars.event.StartElementGeneric(), g94);
g94.addProduction(new com.siemens.ct.exi.grammars.event.EndElement(), g68);
g95.addProduction(new com.siemens.ct.exi.grammars.event.StartElement(qnc87, g18), g93);
g95.addProduction(new com.siemens.ct.exi.grammars.event.StartElement(qnc88, g18), g94);
g96.addProduction(new com.siemens.ct.exi.grammars.event.StartElement(qnc99, g18), g96);
g96.addProduction(new com.siemens.ct.exi.grammars.event.StartElementGeneric(), g97);
g96.addProduction(new com.siemens.ct.exi.grammars.event.EndElement(), g68);
g97.addProduction(new com.siemens.ct.exi.grammars.event.StartElement(qnc99, g18), g96);
g97.addProduction(new com.siemens.ct.exi.grammars.event.EndElement(), g68);
g98.addProduction(new com.siemens.ct.exi.grammars.event.StartElement(qnc99, g18), g96);
g99.addProduction(globalSE75, g79);
g99.addProduction(globalSE76, g79);
g99.addProduction(globalSE95, g79);
g99.addProduction(globalSE119, g79);
g99.addProduction(globalSE85, g79);
g99.addProduction(globalSE97, g79);
g99.addProduction(globalSE80, g79);
g99.addProduction(new com.siemens.ct.exi.grammars.event.StartElementGeneric(), g79);
g99.addProduction(new com.siemens.ct.exi.grammars.event.CharactersGeneric(), g99);
g100.addProduction(globalSE64, g101);
g101.addProduction(globalSE66, g69);
g102.addProduction(globalSE115, g100);
g102.addProduction(globalSE64, g101);
g103.addProduction(globalSE93, g103);
g103.addProduction(new com.siemens.ct.exi.grammars.event.EndElement(), g68);
g104.addProduction(globalSE93, g103);
g105.addProduction(globalSE102, g104);
g106.addProduction(new com.siemens.ct.exi.grammars.event.StartElement(qnc70, g27), g67);
g106.addProduction(new com.siemens.ct.exi.grammars.event.StartElementGeneric(), g67);
g106.addProduction(new com.siemens.ct.exi.grammars.event.EndElement(), g68);
g106.addProduction(new com.siemens.ct.exi.grammars.event.CharactersGeneric(), g106);
g107.addProduction(globalSE59, g105);
g108.addProduction(globalSE109, g109);
g109.addProduction(globalSE73, g110);
g109.addProduction(globalSE82, g110);
g109.addProduction(new com.siemens.ct.exi.grammars.event.EndElement(), g68);
g110.addProduction(globalSE82, g110);
g110.addProduction(new com.siemens.ct.exi.grammars.event.EndElement(), g68);
g111.addProduction(globalSE111, g108);
g112.addProduction(new com.siemens.ct.exi.grammars.event.StartElementGeneric(), g67);
g112.addProduction(new com.siemens.ct.exi.grammars.event.CharactersGeneric(), g112);
g113.addProduction(globalSE106, g113);
g113.addProduction(new com.siemens.ct.exi.grammars.event.EndElement(), g68);
g114.addProduction(globalSE106, g113);
g115.addProduction(new com.siemens.ct.exi.grammars.event.Characters(new com.siemens.ct.exi.datatype.ListDatatype(new com.siemens.ct.exi.datatype.StringDatatype(qnc14), qnc13)), g69);
g116.addProduction(new com.siemens.ct.exi.grammars.event.Characters(new com.siemens.ct.exi.datatype.BooleanDatatype(qnc28)), g69);
g117.addProduction(new com.siemens.ct.exi.grammars.event.Characters(new com.siemens.ct.exi.datatype.NBitUnsignedIntegerDatatype(com.siemens.ct.exi.values.IntegerValue.valueOf(-128), com.siemens.ct.exi.values.IntegerValue.valueOf(127), qnc29)), g69);
g118.addProduction(new com.siemens.ct.exi.grammars.event.Characters(new com.siemens.ct.exi.datatype.DatetimeDatatype(com.siemens.ct.exi.types.DateTimeType.date, qnc30)), g69);
g119.addProduction(new com.siemens.ct.exi.grammars.event.Characters(new com.siemens.ct.exi.datatype.DatetimeDatatype(com.siemens.ct.exi.types.DateTimeType.dateTime, qnc31)), g69);
g120.addProduction(new com.siemens.ct.exi.grammars.event.Characters(new com.siemens.ct.exi.datatype.DecimalDatatype(qnc32)), g69);
g121.addProduction(new com.siemens.ct.exi.grammars.event.Characters(new com.siemens.ct.exi.datatype.FloatDatatype(qnc33)), g69);
g122.addProduction(new com.siemens.ct.exi.grammars.event.Characters(new com.siemens.ct.exi.datatype.DatetimeDatatype(com.siemens.ct.exi.types.DateTimeType.gDay, qnc36)), g69);
g123.addProduction(new com.siemens.ct.exi.grammars.event.Characters(new com.siemens.ct.exi.datatype.DatetimeDatatype(com.siemens.ct.exi.types.DateTimeType.gMonth, qnc37)), g69);
g124.addProduction(new com.siemens.ct.exi.grammars.event.Characters(new com.siemens.ct.exi.datatype.DatetimeDatatype(com.siemens.ct.exi.types.DateTimeType.gMonthDay, qnc38)), g69);
g125.addProduction(new com.siemens.ct.exi.grammars.event.Characters(new com.siemens.ct.exi.datatype.DatetimeDatatype(com.siemens.ct.exi.types.DateTimeType.gYear, qnc39)), g69);
g126.addProduction(new com.siemens.ct.exi.grammars.event.Characters(new com.siemens.ct.exi.datatype.DatetimeDatatype(com.siemens.ct.exi.types.DateTimeType.gYearMonth, qnc40)), g69);
g127.addProduction(new com.siemens.ct.exi.grammars.event.Characters(new com.siemens.ct.exi.datatype.BinaryHexDatatype(qnc41)), g69);
g128.addProduction(new com.siemens.ct.exi.grammars.event.Characters(new com.siemens.ct.exi.datatype.UnsignedIntegerDatatype(qnc47)), g69);
g129.addProduction(new com.siemens.ct.exi.grammars.event.Characters(new com.siemens.ct.exi.datatype.DatetimeDatatype(com.siemens.ct.exi.types.DateTimeType.time, qnc53)), g69);
g130.addProduction(new com.siemens.ct.exi.grammars.event.Characters(new com.siemens.ct.exi.datatype.NBitUnsignedIntegerDatatype(com.siemens.ct.exi.values.IntegerValue.valueOf(0), com.siemens.ct.exi.values.IntegerValue.valueOf(255), qnc55)), g69);
/* END Grammar Events ----- */
}
void initFirstStartGrammars() {
/* BEGIN FirstStartGrammar ----- */
g5.setElementContentGrammar(g67);
g6.setElementContentGrammar(g77);
g7.setElementContentGrammar(g70);
g8.setElementContentGrammar(g99);
g9.setElementContentGrammar(g78);
g9.setTypeCastable(true);
g10.setElementContentGrammar(g83);
g11.setElementContentGrammar(g82);
g12.setElementContentGrammar(g87);
g13.setElementContentGrammar(g86);
g14.setElementContentGrammar(g84);
g15.setElementContentGrammar(g92);
g16.setElementContentGrammar(g90);
g17.setElementContentGrammar(g89);
g17.setTypeCastable(true);
g18.setElementContentGrammar(g70);
g18.setTypeCastable(true);
g19.setElementContentGrammar(g95);
g20.setElementContentGrammar(g98);
g21.setElementContentGrammar(g104);
g22.setElementContentGrammar(g102);
g23.setElementContentGrammar(g67);
g24.setElementContentGrammar(g111);
g25.setElementContentGrammar(g107);
g26.setElementContentGrammar(g106);
g27.setElementContentGrammar(g89);
g28.setElementContentGrammar(g7);
g29.setElementContentGrammar(g114);
g30.setElementContentGrammar(g112);
g31.setElementContentGrammar(g115);
g32.setElementContentGrammar(g78);
g33.setElementContentGrammar(g67);
g34.setElementContentGrammar(g116);
g35.setElementContentGrammar(g117);
g36.setElementContentGrammar(g118);
g37.setElementContentGrammar(g119);
g38.setElementContentGrammar(g120);
g39.setElementContentGrammar(g121);
g40.setElementContentGrammar(g122);
g41.setElementContentGrammar(g123);
g42.setElementContentGrammar(g124);
g43.setElementContentGrammar(g125);
g44.setElementContentGrammar(g126);
g45.setElementContentGrammar(g127);
g46.setElementContentGrammar(g128);
g47.setElementContentGrammar(g129);
g48.setElementContentGrammar(g130);
/* END FirstStartGrammar ----- */
}
public EXIficient_xmldsig_core_schema() {
initGlobalElements();
initGlobalAttributes();
initTypeGrammars();
initGrammarEvents();
initFirstStartGrammars();
}
public boolean isSchemaInformed() {
return true;
}
public String getSchemaId() {
return schemaId;
}
public void setSchemaId(String schemaId) throws UnsupportedOption {
this.schemaId = schemaId;
}
public boolean isBuiltInXMLSchemaTypesOnly() {
return false;
}
public Grammar getDocumentGrammar() {
return g0;
}
public Grammar getFragmentGrammar() {
return g3;
}
public GrammarContext getGrammarContext() {
return gc;
}
}

View File

@@ -0,0 +1,258 @@
/*******************************************************************************
* The MIT License (MIT)
*
* Copyright (c) 2015 - 2019 Dr. Marc Mültin (V2G Clarity)
*
* Permission is hereby granted, free of charge, to any person obtaining a copy
* of this software and associated documentation files (the "Software"), to deal
* in the Software without restriction, including without limitation the rights
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
* copies of the Software, and to permit persons to whom the Software is
* furnished to do so, subject to the following conditions:
*
* The above copyright notice and this permission notice shall be included in
* all copies or substantial portions of the Software.
*
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
* THE SOFTWARE.
*******************************************************************************/
package com.v2gclarity.risev2g.shared.exiCodec;
import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.StringWriter;
import java.util.Base64;
import javax.xml.bind.JAXBElement;
import javax.xml.bind.JAXBException;
import javax.xml.bind.Marshaller;
import javax.xml.bind.Unmarshaller;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
import com.v2gclarity.risev2g.shared.enumerations.GlobalValues;
import com.v2gclarity.risev2g.shared.utils.ByteUtils;
import com.v2gclarity.risev2g.shared.utils.MiscUtils;
import com.v2gclarity.risev2g.shared.v2gMessages.appProtocol.SupportedAppProtocolReq;
import com.v2gclarity.risev2g.shared.v2gMessages.appProtocol.SupportedAppProtocolRes;
import com.v2gclarity.risev2g.shared.v2gMessages.msgDef.SignedInfoType;
import com.v2gclarity.risev2g.shared.v2gMessages.msgDef.V2GMessage;
public abstract class ExiCodec {
private Logger logger = LogManager.getLogger(this.getClass().getSimpleName());
private Marshaller marshaller;
private Unmarshaller unmarshaller;
private InputStream inStream;
private Object decodedMessage;
private String decodedExi;
private boolean xmlMsgRepresentation;
private boolean hexAndBase64MsgRepresentation;
public ExiCodec() {
// Check if XML representation of sent messages is to be shown (for debug purposes)
if ((boolean) MiscUtils.getPropertyValue("exi.messages.showxml"))
setXMLMsgRepresentation(true);
else
setXMLMsgRepresentation(false);
// Check if hexadecimal and Base64 representation of sent messages is to be shown (for debug purposes)
if ((boolean) MiscUtils.getPropertyValue("exi.messages.showhex"))
setHexAndBase64MsgRepresentation(true);
else
setHexAndBase64MsgRepresentation(false);
}
public InputStream marshalToInputStream(Object jaxbObject) {
ByteArrayOutputStream baos = new ByteArrayOutputStream();
try {
if (getInStream() != null) getInStream().reset();
getMarshaller().marshal(jaxbObject, baos);
setInStream(new ByteArrayInputStream(baos.toByteArray()));
baos.close();
if (isXMLMsgRepresentation()) showXMLRepresentationOfMessage(jaxbObject);
return getInStream();
} catch (JAXBException | IOException e) {
getLogger().error(e.getClass().getSimpleName() + " occurred while trying to marshal to InputStream from JAXBElement", e);
return null;
}
}
public Object unmarshallToMessage(String decodedExiString) {
try {
if (getInStream() != null) getInStream().reset();
setInStream(new ByteArrayInputStream(decodedExiString.getBytes()));
Object unmarhalledObject = getUnmarshaller().unmarshal(getInStream());
if (isXMLMsgRepresentation()) showXMLRepresentationOfMessage(unmarhalledObject);
return unmarhalledObject;
} catch (IOException | JAXBException | RuntimeException e) {
getLogger().error(e.getClass().getSimpleName() + " occurred while trying to unmarshall decoded message", e);
return null;
}
}
/**
* Shows the XML representation of a marshalled or unmarshalled message object. This is useful for debugging
* purposes.
*
* @param message The (un)marshalled message object
*/
@SuppressWarnings("rawtypes")
public void showXMLRepresentationOfMessage(Object message) {
StringWriter sw = new StringWriter();
String className = "";
if (message instanceof V2GMessage) {
className = ((V2GMessage) message).getBody().getBodyElement().getName().getLocalPart();
} else if (message instanceof JAXBElement) {
className = ((JAXBElement) message).getName().getLocalPart();
} else if (message instanceof SupportedAppProtocolReq) {
className = "SupportedAppProtocolReq";
} else if (message instanceof SupportedAppProtocolRes) {
className = "SupportedAppProtocolRes";
} else {
className = "marshalled JAXBElement";
}
try {
getMarshaller().marshal(message, sw);
getLogger().debug("XML representation of " + className + ":\n" + sw.toString());
} catch (JAXBException e) {
getLogger().error(e.getClass().getSimpleName() + " occurred while trying to show XML representation of " + className, e);
}
}
@SuppressWarnings("rawtypes")
public void showHexAndBase64RepresentationOfMessage(Object messageOrField, byte[] exiEncodedObject) {
String className = "";
if (messageOrField instanceof V2GMessage) {
className = ((V2GMessage) messageOrField).getBody().getBodyElement().getName().getLocalPart();
} else if (messageOrField instanceof JAXBElement) {
className = ((JAXBElement) messageOrField).getName().getLocalPart();
} else if (messageOrField instanceof SupportedAppProtocolReq) {
className = "SupportedAppProtocolReq";
} else if (messageOrField instanceof SupportedAppProtocolRes) {
className = "SupportedAppProtocolRes";
} else {
className = " JAXBElement";
}
getLogger().debug("EXI encoded " + className + ": " + ByteUtils.toHexString(exiEncodedObject));
getLogger().debug("Base64 encoded " + className + ": " + Base64.getEncoder().encodeToString(exiEncodedObject));
}
/**
* Provides the EXI encoding of the header's SignedInfo element. The resulting byte array can then be used to
* verify a signature.
*
* @param jaxbSignedInfo The SignedInfo element of the V2GMessage header, given as a JAXB element
* @return The EXI encoding of the SignedInfo element given as a byte array
*/
public byte[] getExiEncodedSignedInfo(JAXBElement<SignedInfoType> jaxbSignedInfo) {
// The schema-informed fragment grammar option needs to be used for EXI encodings in the header's signature
setFragment(true);
// The SignedInfo element must be encoded
byte[] encodedSignedInfo = encodeEXI(
jaxbSignedInfo,
GlobalValues.SCHEMA_PATH_XMLDSIG.toString()
);
// Do not use the schema-informed fragment grammar option for other EXI encodings (message bodies)
setFragment(false);
return encodedSignedInfo;
}
public abstract byte[] encodeEXI(Object jaxbXML, String xsdSchemaPath);
public abstract Object decodeEXI(byte[] exiEncodedMessage, boolean supportedAppProtocolHandshake);
public abstract void setFragment(boolean useFragmentGrammar);
public Marshaller getMarshaller() {
return marshaller;
}
public void setMarshaller(Marshaller marshaller) {
this.marshaller = marshaller;
}
public Unmarshaller getUnmarshaller() {
return unmarshaller;
}
public void setUnmarshaller(Unmarshaller unmarshaller) {
this.unmarshaller = unmarshaller;
}
public Logger getLogger() {
return logger;
}
public Object getDecodedMessage() {
return decodedMessage;
}
public void setDecodedMessage(Object decodedMessage) {
this.decodedMessage = decodedMessage;
}
public String getDecodedExi() {
return decodedExi;
}
public void setDecodedExi(String decodedExi) {
this.decodedExi = decodedExi;
}
public InputStream getInStream() {
return inStream;
}
public void setInStream(InputStream inStream) {
this.inStream = inStream;
}
private void setXMLMsgRepresentation(boolean xmlMsgRepresentation) {
this.xmlMsgRepresentation = xmlMsgRepresentation;
}
public boolean isXMLMsgRepresentation() {
return xmlMsgRepresentation;
}
public boolean isHexAndBase64MsgRepresentation() {
return hexAndBase64MsgRepresentation;
}
public void setHexAndBase64MsgRepresentation(boolean hexAndBase64MsgRepresentation) {
this.hexAndBase64MsgRepresentation = hexAndBase64MsgRepresentation;
}
}

View File

@@ -0,0 +1,374 @@
/*******************************************************************************
* The MIT License (MIT)
*
* Copyright (c) 2015 - 2019 Dr. Marc Mültin (V2G Clarity)
*
* Permission is hereby granted, free of charge, to any person obtaining a copy
* of this software and associated documentation files (the "Software"), to deal
* in the Software without restriction, including without limitation the rights
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
* copies of the Software, and to permit persons to whom the Software is
* furnished to do so, subject to the following conditions:
*
* The above copyright notice and this permission notice shall be included in
* all copies or substantial portions of the Software.
*
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
* THE SOFTWARE.
*******************************************************************************/
package com.v2gclarity.risev2g.shared.exiCodec;
import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.StringWriter;
import javax.xml.parsers.SAXParserFactory;
import javax.xml.transform.TransformerConfigurationException;
import javax.xml.transform.TransformerFactory;
import javax.xml.transform.sax.SAXTransformerFactory;
import javax.xml.transform.sax.TransformerHandler;
import javax.xml.transform.stream.StreamResult;
import org.xml.sax.InputSource;
import org.xml.sax.SAXException;
import org.openexi.proc.common.EXIOptionsException;
import org.openexi.proc.common.GrammarOptions;
import org.openexi.proc.grammars.GrammarCache;
import org.openexi.sax.EXIReader;
import org.openexi.sax.Transmogrifier;
import org.openexi.sax.TransmogrifierException;
import org.openexi.schema.EXISchema;
import org.openexi.scomp.EXISchemaFactory;
import org.openexi.scomp.EXISchemaFactoryException;
import org.openexi.scomp.EXISchemaReader;
import com.v2gclarity.risev2g.shared.enumerations.GlobalValues;
import com.v2gclarity.risev2g.shared.utils.ByteUtils;
public final class OpenEXICodec extends ExiCodec {
// -- BEGIN: SINGLETON DEFINITION --
/*
* Eager instantiation of the singleton, since a OpenEXICodec is always needed.
* The JVM creates the unique instance when the class is loaded and before any thread tries to
* access the instance variable -> thread safe.
*/
private static final OpenEXICodec instance = new OpenEXICodec();
private Transmogrifier transmogrifier;
private GrammarCache grammarCache;
private EXISchemaFactory exiSchemaFactory;
private InputStream schemaMsgDefIS;
private InputStream schemaMsgBodyIS;
private InputStream schemaMsgDataTypesIS;
private InputStream schemaXMLDSigIS;
private InputStream schemaAppProtocolIS;
private EXISchema exiSchemaAppProtocol;
private EXISchema exiSchemaMsgDef;
private EXISchema exiSchemaMsgBody;
private EXISchema exiSchemaMsgDataTypes;
private EXISchema exiSchemaXMLDSig;
private short options;
private SAXTransformerFactory saxTransformerFactory;
private SAXParserFactory saxParserFactory;
private TransformerHandler transformerHandler;
private EXIReader exiReader;
private OpenEXICodec() {
super();
// All EXI options can expressed in a single short integer
setOptions(GrammarOptions.DEFAULT_OPTIONS);
// The Transmogrifier performs the translation from XML to EXI format
setTransmogrifier(new Transmogrifier());
getTransmogrifier().setValuePartitionCapacity(0);
getTransmogrifier().setFragment(false);
// getTransmogrifier().setDivertBuiltinGrammarToAnyType(true); // enable V2G's built-in grammar usage
// Standard SAX methods parse content and lexical values
setSaxTransformerFactory((SAXTransformerFactory) TransformerFactory.newInstance());
setSaxParserFactory(SAXParserFactory.newInstance());
getSaxParserFactory().setNamespaceAware(true);
try {
setTransformerHandler(getSaxTransformerFactory().newTransformerHandler());
} catch (TransformerConfigurationException e) {
getLogger().error(e.getClass().getSimpleName() + " occurred while trying to instantiate OpenEXICodec");
}
// EXIReader infers and reconstructs the XML file structure
setExiReader(new EXIReader());
getExiReader().setValuePartitionCapacity(0);
setExiSchemaFactory(new EXISchemaFactory());
EXISchemaFactoryExceptionHandler esfe = new EXISchemaFactoryExceptionHandler();
getExiSchemaFactory().setCompilerErrorHandler(esfe);
setSchemaAppProtocolIS(getClass().getResourceAsStream(GlobalValues.SCHEMA_PATH_APP_PROTOCOL.toString()));
setSchemaMsgDefIS(getClass().getResourceAsStream(GlobalValues.SCHEMA_PATH_MSG_DEF.toString()));
setSchemaMsgBodyIS(getClass().getResourceAsStream(GlobalValues.SCHEMA_PATH_MSG_BODY.toString()));
setSchemaMsgDataTypesIS(getClass().getResourceAsStream(GlobalValues.SCHEMA_PATH_MSG_DATA_TYPES.toString()));
setSchemaXMLDSigIS(getClass().getResourceAsStream(GlobalValues.SCHEMA_PATH_XMLDSIG.toString()));
/*
* It is currently a problem with OpenExi to resolve the XSDs which are imported in V2G_CI_MsgDef.xsd.
* A workaround is the serialization of V2G_CI_MsgDef.xsd into an EXI grammar file (.exig) which can
* be done by following tutorial 4 (http://openexi.sourceforge.net/tutorial/example4.htm).
* Thus, EXIficient implementation uses the XSD file while OpenEXI uses the EXIG file.
*/
try {
setExiSchemaAppProtocol(getExiSchemaFactory().compile(new InputSource(getSchemaAppProtocolIS())));
setExiSchemaMsgDef(new EXISchemaReader().parse(getClass().getResourceAsStream("/schemas/V2G_CI_MsgDef.exig")));
setExiSchemaXMLDSig(getExiSchemaFactory().compile(new InputSource(getSchemaXMLDSigIS())));
} catch (IOException | EXISchemaFactoryException | EXIOptionsException e) {
getLogger().error(e.getClass().getSimpleName() + " occurred while trying to set EXI schema", e);
}
}
public static OpenEXICodec getInstance() {
return instance;
}
// -- END: SINGLETON DEFINITION --
@Override
public byte[] encodeEXI(Object jaxbObject, String xsdSchemaPath) {
ByteArrayOutputStream baos = new ByteArrayOutputStream();
try {
/*
* Set the schema and EXI options in the Grammar Cache.
* The Grammar Cache stores the XML schema and options used to encode an EXI file.
* The settings must match when encoding and subsequently decoding a data set.
*/
if (xsdSchemaPath.equals(GlobalValues.SCHEMA_PATH_APP_PROTOCOL.toString()))
setGrammarCache(new GrammarCache(getExiSchemaAppProtocol(), getOptions()));
else if (xsdSchemaPath.equals(GlobalValues.SCHEMA_PATH_MSG_DEF.toString()))
setGrammarCache(new GrammarCache(getExiSchemaMsgDef(), getOptions()));
else if (xsdSchemaPath.equals(GlobalValues.SCHEMA_PATH_XMLDSIG.toString()))
setGrammarCache(new GrammarCache(getExiSchemaXMLDSig(), getOptions()));
else {
getLogger().error("False schema path provided for encoding jaxbObject into EXI");
return null;
}
// Set the configuration options in the Transmogrifier
getTransmogrifier().setGrammarCache(getGrammarCache());
// Set the output stream
getTransmogrifier().setOutputStream(baos);
// Encode the input stream
getTransmogrifier().encode(new InputSource(marshalToInputStream(jaxbObject)));
byte[] encodedExi = baos.toByteArray();
if (isHexAndBase64MsgRepresentation())
showHexAndBase64RepresentationOfMessage(jaxbObject, encodedExi);
baos.close();
return encodedExi;
} catch (IOException | EXIOptionsException | TransmogrifierException e) {
getLogger().error(e.getClass().getSimpleName() + " occurred while trying to encode EXI", e);
return null;
}
}
@Override
public Object decodeEXI(byte[] exiEncodedMessage, boolean supportedAppProtocolHandshake) {
getLogger().debug("Received EXI stream: " + ByteUtils.toHexString(exiEncodedMessage));
StringWriter stringWriter = new StringWriter();
try {
/*
* Set the schema and EXI options in the Grammar Cache.
* The Grammar Cache stores the XML schema and options used to encode an EXI file.
* The settings must match when encoding and subsequently decoding a data set.
*/
if (supportedAppProtocolHandshake)
setGrammarCache(new GrammarCache(getExiSchemaAppProtocol(), getOptions()));
else
setGrammarCache(new GrammarCache(getExiSchemaMsgDef(), getOptions()));
// Use the Grammar Cache to set the schema and grammar options for EXIReader
getExiReader().setGrammarCache(getGrammarCache());
// Prepare to send the results from the transformer to an OutputStream object
getTransformerHandler().setResult(new StreamResult(stringWriter));
// Assign the transformer handler to interpret XML content
getExiReader().setContentHandler(getTransformerHandler());
// Parse the information from exiEncodedMessage
getExiReader().parse(new InputSource(new ByteArrayInputStream(exiEncodedMessage)));
// Get the resulting string
setDecodedExi(stringWriter.getBuffer().toString());
return unmarshallToMessage(getDecodedExi());
} catch (IOException | EXIOptionsException | SAXException e) {
getLogger().error(e.getClass().getSimpleName() + " occurred while trying to decode EXI", e);
return null;
}
}
public Transmogrifier getTransmogrifier() {
return transmogrifier;
}
public void setTransmogrifier(Transmogrifier transmogrifier) {
this.transmogrifier = transmogrifier;
}
public GrammarCache getGrammarCache() {
return grammarCache;
}
public void setGrammarCache(GrammarCache grammarCache) {
this.grammarCache = grammarCache;
}
public EXISchemaFactory getExiSchemaFactory() {
return exiSchemaFactory;
}
public void setExiSchemaFactory(EXISchemaFactory exiSchemaFactory) {
this.exiSchemaFactory = exiSchemaFactory;
}
@SuppressWarnings("unused")
private InputStream getSchemaMsgDefIS() {
return schemaMsgDefIS;
}
private void setSchemaMsgDefIS(InputStream schemaMsgDefIS) {
this.schemaMsgDefIS = schemaMsgDefIS;
}
private InputStream getSchemaAppProtocolIS() {
return schemaAppProtocolIS;
}
private void setSchemaAppProtocolIS(InputStream schemaAppProtocolIS) {
this.schemaAppProtocolIS = schemaAppProtocolIS;
}
private EXISchema getExiSchemaAppProtocol() {
return exiSchemaAppProtocol;
}
private void setExiSchemaAppProtocol(EXISchema exiSchemaAppProtocol) {
this.exiSchemaAppProtocol = exiSchemaAppProtocol;
}
private short getOptions() {
return options;
}
private void setOptions(short options) {
this.options = options;
}
public SAXTransformerFactory getSaxTransformerFactory() {
return saxTransformerFactory;
}
public void setSaxTransformerFactory(SAXTransformerFactory saxTransformerFactory) {
this.saxTransformerFactory = saxTransformerFactory;
}
private SAXParserFactory getSaxParserFactory() {
return saxParserFactory;
}
private void setSaxParserFactory(SAXParserFactory saxParserFactory) {
this.saxParserFactory = saxParserFactory;
}
public TransformerHandler getTransformerHandler() {
return transformerHandler;
}
public void setTransformerHandler(TransformerHandler transformerHandler) {
this.transformerHandler = transformerHandler;
}
public EXIReader getExiReader() {
return exiReader;
}
public void setExiReader(EXIReader exiReader) {
this.exiReader = exiReader;
}
public EXISchema getExiSchemaMsgDef() {
return exiSchemaMsgDef;
}
public void setExiSchemaMsgDef(EXISchema exiSchemaMsgDef) {
this.exiSchemaMsgDef = exiSchemaMsgDef;
}
public EXISchema getExiSchemaXMLDSig() {
return exiSchemaXMLDSig;
}
public void setExiSchemaXMLDSig(EXISchema exiSchemaXMLDSig) {
this.exiSchemaXMLDSig = exiSchemaXMLDSig;
}
@Override
public void setFragment(boolean useFragmentGrammar) {
getTransmogrifier().setFragment(useFragmentGrammar);
}
public EXISchema getExiSchemaMsgBody() {
return exiSchemaMsgBody;
}
public void setExiSchemaMsgBody(EXISchema exiSchemaMsgBody) {
this.exiSchemaMsgBody = exiSchemaMsgBody;
}
public EXISchema getExiSchemaMsgDataTypes() {
return exiSchemaMsgDataTypes;
}
public void setExiSchemaMsgDataTypes(EXISchema exiSchemaMsgDataTypes) {
this.exiSchemaMsgDataTypes = exiSchemaMsgDataTypes;
}
public InputStream getSchemaMsgBodyIS() {
return schemaMsgBodyIS;
}
public void setSchemaMsgBodyIS(InputStream schemaMsgBodyIS) {
this.schemaMsgBodyIS = schemaMsgBodyIS;
}
public InputStream getSchemaMsgDataTypesIS() {
return schemaMsgDataTypesIS;
}
public void setSchemaMsgDataTypesIS(InputStream schemaMsgDataTypesIS) {
this.schemaMsgDataTypesIS = schemaMsgDataTypesIS;
}
public InputStream getSchemaXMLDSigIS() {
return schemaXMLDSigIS;
}
public void setSchemaXMLDSigIS(InputStream schemaXMLDSigIS) {
this.schemaXMLDSigIS = schemaXMLDSigIS;
}
}

View File

@@ -0,0 +1,103 @@
/*******************************************************************************
* The MIT License (MIT)
*
* Copyright (c) 2015 - 2019 Dr. Marc Mültin (V2G Clarity)
*
* Permission is hereby granted, free of charge, to any person obtaining a copy
* of this software and associated documentation files (the "Software"), to deal
* in the Software without restriction, including without limitation the rights
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
* copies of the Software, and to permit persons to whom the Software is
* furnished to do so, subject to the following conditions:
*
* The above copyright notice and this permission notice shall be included in
* all copies or substantial portions of the Software.
*
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
* THE SOFTWARE.
*******************************************************************************/
package com.v2gclarity.risev2g.shared.exiCodec;
import java.io.IOException;
import java.io.InputStream;
import java.util.HashMap;
import org.apache.xerces.xni.XMLResourceIdentifier;
import org.apache.xerces.xni.XNIException;
import org.apache.xerces.xni.parser.XMLEntityResolver;
import org.apache.xerces.xni.parser.XMLInputSource;
import org.openexi.scomp.EXISchemaFactory;
import com.v2gclarity.risev2g.shared.enumerations.GlobalValues;
/**
* This class is needed to access all linked XSD files via an InputStream. Accessing XSD files
* via an InputStream is needed when using them inside a jar file. Normally, if a XSD file imports
* other XSD files, an exception will be thrown because those files cannot be found (since there
* is no file system to search at, just an InputStream). With this XSDResolver, every imported
* XSD file must be added together with its InputStream to a Map of entities the GrammarLoader (EXIficient)
* or Transmogrifier (OpenExi) can use for lookup.
*/
public class XSDResolver implements XMLEntityResolver {
private static final XSDResolver instance = new XSDResolver();
private HashMap<String, XMLInputSource> xmlInputSourceEntities;
private XSDResolver() {
EXISchemaFactory exiSchemaFactory = new EXISchemaFactory();
EXISchemaFactoryExceptionHandler esfe = new EXISchemaFactoryExceptionHandler();
exiSchemaFactory.setCompilerErrorHandler(esfe);
InputStream isV2GCIMsgDef = getClass().getResourceAsStream(GlobalValues.SCHEMA_PATH_MSG_DEF.toString());
XMLInputSource xmlISV2GCIMsgDef = new XMLInputSource(null, null, null, isV2GCIMsgDef, null);
InputStream isV2GCIMsgHeader = getClass().getResourceAsStream(GlobalValues.SCHEMA_PATH_MSG_HEADER.toString());
XMLInputSource xmlISV2GCIMsgHeader = new XMLInputSource(null, null, null, isV2GCIMsgHeader, null);
InputStream isV2GCIMsgBody = getClass().getResourceAsStream(GlobalValues.SCHEMA_PATH_MSG_BODY.toString());
XMLInputSource xmlISV2GCIMsgBody = new XMLInputSource(null, null, null, isV2GCIMsgBody, null);
InputStream isV2GCIMsgDataTypes = getClass().getResourceAsStream(GlobalValues.SCHEMA_PATH_MSG_DATA_TYPES.toString());
XMLInputSource xmlISV2GCIMsgDataTypes = new XMLInputSource(null, null, null, isV2GCIMsgDataTypes, null);
InputStream isXMLDSig = getClass().getResourceAsStream(GlobalValues.SCHEMA_PATH_XMLDSIG.toString());
XMLInputSource xmlISXMLDSig = new XMLInputSource(null, null, null, isXMLDSig, null);
setEntity("V2G_CI_MsgDef.xsd", xmlISV2GCIMsgDef);
setEntity("V2G_CI_MsgBody.xsd", xmlISV2GCIMsgBody);
setEntity("V2G_CI_MsgHeader.xsd", xmlISV2GCIMsgHeader);
setEntity("V2G_CI_MsgDataTypes.xsd", xmlISV2GCIMsgDataTypes);
setEntity("xmldsig-core-schema.xsd", xmlISXMLDSig);
}
public static XSDResolver getInstance() {
return instance;
}
public void setEntity(String literalSystemId, XMLInputSource xmlInput) {
if (xmlInputSourceEntities == null) {
xmlInputSourceEntities = new HashMap<String, XMLInputSource>();
}
xmlInputSourceEntities.put(literalSystemId, xmlInput);
}
@Override
public XMLInputSource resolveEntity(XMLResourceIdentifier resourceIdentifier)
throws XNIException, IOException {
String literalSystemId = resourceIdentifier.getLiteralSystemId();
if (xmlInputSourceEntities != null && xmlInputSourceEntities.containsKey(literalSystemId)) {
return xmlInputSourceEntities.get(literalSystemId);
}
return null;
}
}

View File

@@ -0,0 +1,47 @@
/*******************************************************************************
* The MIT License (MIT)
*
* Copyright (c) 2015 - 2019 Dr. Marc Mültin (V2G Clarity)
*
* Permission is hereby granted, free of charge, to any person obtaining a copy
* of this software and associated documentation files (the "Software"), to deal
* in the Software without restriction, including without limitation the rights
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
* copies of the Software, and to permit persons to whom the Software is
* furnished to do so, subject to the following conditions:
*
* The above copyright notice and this permission notice shall be included in
* all copies or substantial portions of the Software.
*
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
* THE SOFTWARE.
*******************************************************************************/
package com.v2gclarity.risev2g.shared.messageHandling;
import com.v2gclarity.risev2g.shared.misc.State;
public class ChangeProcessingState extends ReactionToIncomingMessage {
private Object payload;
private State newState;
public ChangeProcessingState(Object payload, State newState) {
super();
this.payload = payload;
this.newState = newState;
}
public Object getPayload() {
return payload;
}
public State getNewState() {
return newState;
}
}

View File

@@ -0,0 +1,328 @@
/*******************************************************************************
* The MIT License (MIT)
*
* Copyright (c) 2015 - 2019 Dr. Marc Mültin (V2G Clarity)
*
* Permission is hereby granted, free of charge, to any person obtaining a copy
* of this software and associated documentation files (the "Software"), to deal
* in the Software without restriction, including without limitation the rights
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
* copies of the Software, and to permit persons to whom the Software is
* furnished to do so, subject to the following conditions:
*
* The above copyright notice and this permission notice shall be included in
* all copies or substantial portions of the Software.
*
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
* THE SOFTWARE.
*******************************************************************************/
package com.v2gclarity.risev2g.shared.messageHandling;
import java.security.interfaces.ECPrivateKey;
import java.util.Arrays;
import java.util.HashMap;
import javax.xml.bind.JAXBContext;
import javax.xml.bind.JAXBElement;
import javax.xml.bind.JAXBException;
import javax.xml.bind.ValidationEvent;
import javax.xml.bind.ValidationEventHandler;
import javax.xml.namespace.QName;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
import com.v2gclarity.risev2g.shared.enumerations.GlobalValues;
import com.v2gclarity.risev2g.shared.exiCodec.EXIficientCodec;
import com.v2gclarity.risev2g.shared.exiCodec.ExiCodec;
import com.v2gclarity.risev2g.shared.exiCodec.OpenEXICodec;
import com.v2gclarity.risev2g.shared.misc.V2GTPMessage;
import com.v2gclarity.risev2g.shared.utils.ByteUtils;
import com.v2gclarity.risev2g.shared.utils.MiscUtils;
import com.v2gclarity.risev2g.shared.utils.SecurityUtils;
import com.v2gclarity.risev2g.shared.v2gMessages.appProtocol.SupportedAppProtocolReq;
import com.v2gclarity.risev2g.shared.v2gMessages.appProtocol.SupportedAppProtocolRes;
import com.v2gclarity.risev2g.shared.v2gMessages.msgDef.BodyBaseType;
import com.v2gclarity.risev2g.shared.v2gMessages.msgDef.BodyType;
import com.v2gclarity.risev2g.shared.v2gMessages.msgDef.MessageHeaderType;
import com.v2gclarity.risev2g.shared.v2gMessages.msgDef.NotificationType;
import com.v2gclarity.risev2g.shared.v2gMessages.msgDef.SignatureType;
import com.v2gclarity.risev2g.shared.v2gMessages.msgDef.SignatureValueType;
import com.v2gclarity.risev2g.shared.v2gMessages.msgDef.SignedInfoType;
import com.v2gclarity.risev2g.shared.v2gMessages.msgDef.V2GMessage;
public final class MessageHandler {
// -- BEGIN: SINGLETON DEFINITION --
/*
* Eager instantiation of the singleton, since a MessageHandler is always needed.
* The JVM creates the unique instance when the class is loaded and before any thread tries to
* access the instance variable -> thread safe.
*/
private static final MessageHandler instance = new MessageHandler();
public static MessageHandler getInstance() {
return instance;
}
// -- END: SINGLETON DEFINITION --
private Logger logger = LogManager.getLogger(this.getClass().getSimpleName());
private ExiCodec exiCodec;
private JAXBContext jaxbContext;
/**
* This constructor is used by V2GCommunicationSessionHandlerEVCC and -SECC
*/
public MessageHandler() {
// Choose which implementation of an EXI codec to use in the respective properties file
String exiCodecChoice = (String) MiscUtils.getPropertyValue("exi.codec");
if (exiCodecChoice.equals("open_exi")) setExiCodec(OpenEXICodec.getInstance());
else setExiCodec(EXIficientCodec.getInstance());
// Setting the JAXBContext is a very time-consuming action and should only be done once during startup
setJaxbContext(SupportedAppProtocolReq.class, SupportedAppProtocolRes.class, V2GMessage.class);
}
public synchronized boolean isV2GTPMessageValid(V2GTPMessage v2gTpMessage) {
if (isVersionAndInversionFieldCorrect(v2gTpMessage) &&
isPayloadTypeCorrect(v2gTpMessage) &&
isPayloadLengthCorrect(v2gTpMessage))
return true;
return false;
}
public synchronized boolean isVersionAndInversionFieldCorrect(V2GTPMessage v2gTpMessage) {
if (v2gTpMessage.getProtocolVersion() != GlobalValues.V2GTP_VERSION_1_IS.getByteValue()) {
getLogger().error("Protocol version (" + ByteUtils.toStringFromByte(v2gTpMessage.getProtocolVersion()) +
") is not supported!");
return false;
}
if (v2gTpMessage.getInverseProtocolVersion() != (byte) (v2gTpMessage.getProtocolVersion() ^ 0xFF)) {
getLogger().error("Inverse protocol version (" + ByteUtils.toStringFromByte(v2gTpMessage.getInverseProtocolVersion()) +
") does not match the inverse value of the protocol version (" + v2gTpMessage.getProtocolVersion() + ")!");
return false;
}
return true;
}
public synchronized boolean isPayloadTypeCorrect(V2GTPMessage v2gTpMessage) {
byte[] payloadType = v2gTpMessage.getPayloadType();
if (Arrays.equals(payloadType, GlobalValues.V2GTP_PAYLOAD_TYPE_EXI_ENCODED_V2G_MESSAGE.getByteArrayValue()) ||
Arrays.equals(payloadType, GlobalValues.V2GTP_PAYLOAD_TYPE_SDP_REQUEST_MESSAGE.getByteArrayValue()) ||
Arrays.equals(payloadType, GlobalValues.V2GTP_PAYLOAD_TYPE_SDP_RESPONSE_MESSAGE.getByteArrayValue())) return true;
getLogger().error("Payload type not supported! Proposed payload type: " + ByteUtils.toStringFromByteArray(v2gTpMessage.getPayloadType()));
return false;
}
public synchronized boolean isPayloadLengthCorrect(V2GTPMessage v2gTpMessage) {
if (ByteUtils.toLongFromByteArray(v2gTpMessage.getPayloadLength()) > GlobalValues.V2GTP_HEADER_MAX_PAYLOAD_LENGTH.getLongValue() ||
ByteUtils.toLongFromByteArray(v2gTpMessage.getPayloadLength()) < 0L) {
getLogger().error("Payload length (" + ByteUtils.toLongFromByteArray(v2gTpMessage.getPayloadLength()) +
" bytes) not supported! Must be between 0 and " +
GlobalValues.V2GTP_HEADER_MAX_PAYLOAD_LENGTH.getLongValue() + " bytes");
return false;
}
int payLoadLengthField = ByteUtils.toIntFromByteArray(v2gTpMessage.getPayloadLength());
if (v2gTpMessage.getPayload().length != payLoadLengthField) {
getLogger().error("Length of payload (" + v2gTpMessage.getPayload().length + " bytes) does not match value of " +
"field payloadLength (" + payLoadLengthField + " bytes)");
return false;
}
return true;
}
public synchronized Object suppAppProtocolMsgToExi(Object suppAppProtocolObject) {
return getExiCodec().encodeEXI(suppAppProtocolObject, GlobalValues.SCHEMA_PATH_APP_PROTOCOL.toString());
}
public synchronized Object v2gMsgToExi(Object jaxbObject) {
byte[] encodedEXI = getExiCodec().encodeEXI(jaxbObject, GlobalValues.SCHEMA_PATH_MSG_DEF.toString());
return encodedEXI;
}
public synchronized Object exiToSuppAppProtocolMsg(byte[] exiEncodedMessage) {
return getExiCodec().decodeEXI(exiEncodedMessage, true);
}
public synchronized Object exiToV2gMsg(byte[] exiEncodedMessage) {
return getExiCodec().decodeEXI(exiEncodedMessage, false);
}
public synchronized V2GMessage getV2GMessage(
byte[] sessionID,
HashMap<String, byte[]> xmlSignatureRefElements,
ECPrivateKey signaturePrivateKey,
JAXBElement<? extends BodyBaseType> v2gMessageInstance) {
return getV2GMessage(sessionID, null, xmlSignatureRefElements, signaturePrivateKey, v2gMessageInstance);
}
public synchronized V2GMessage getV2GMessage(
byte[] sessionID,
NotificationType notification,
HashMap<String, byte[]> xmlSignatureRefElements,
ECPrivateKey signaturePrivateKey,
JAXBElement<? extends BodyBaseType> v2gMessageInstance) {
BodyType body = new BodyType();
body.setBodyElement(v2gMessageInstance);
V2GMessage v2gMessage = new V2GMessage();
v2gMessage.setHeader(getHeader(sessionID, notification, v2gMessageInstance, xmlSignatureRefElements, signaturePrivateKey));
v2gMessage.setBody(body);
return v2gMessage;
}
private synchronized MessageHeaderType getHeader(
byte[] sessionID,
NotificationType notification,
JAXBElement<? extends BodyBaseType> v2gMessageInstance,
HashMap<String, byte[]> xmlSignatureRefElements,
ECPrivateKey signaturePrivateKey) {
MessageHeaderType header = new MessageHeaderType();
header.setSessionID(sessionID);
header.setNotification(notification);
if (xmlSignatureRefElements != null && xmlSignatureRefElements.size() != 0) {
SignedInfoType signedInfo = SecurityUtils.getSignedInfo(xmlSignatureRefElements);
byte[] signature = SecurityUtils.signSignedInfoElement(
getExiCodec().getExiEncodedSignedInfo(getJaxbElement(signedInfo)),
signaturePrivateKey
);
SignatureValueType signatureValue = new SignatureValueType();
signatureValue.setValue(signature);
SignatureType xmlSignature = new SignatureType();
xmlSignature.setSignatureValue(signatureValue);
xmlSignature.setSignedInfo(signedInfo);
header.setSignature(xmlSignature);
}
return header;
}
/**
* Creates an XML element from the given object which may be a complete message or just a field of a
* message. In case of XML signature generation, for some messages certain fields need to be signed
* instead of the complete message.
*
* Suppressed unchecked warning, because the cast is inferred from the type
* of messageOrField parameter
*
* @param messageOrField The message or field for which a digest is to be generated
* @return The JAXBElement of the provided message or field
*/
@SuppressWarnings({ "unchecked" })
public synchronized <T> JAXBElement<T> getJaxbElement(T messageOrField) {
String messageName = messageOrField.getClass().getSimpleName().replace("Type", "");
String namespace = "";
JAXBElement<T> jaxbElement = null;
if (messageOrField instanceof SignedInfoType) {
namespace = GlobalValues.V2G_CI_XMLDSIG_NAMESPACE.toString();
} else {
namespace = GlobalValues.V2G_CI_MSG_BODY_NAMESPACE.toString();
/*
* We need to set the localPart of the QName object for the CertificateInstallationRes/CertificateUpdateRes parameters
* correctly. The messageOrField object's class name cannot be taken directly as it differs from what should be the
* XML element name.
*/
switch (messageName) {
case "CertificateChain":
messageName = "ContractSignatureCertChain";
break;
case "DiffieHellmanPublickey":
messageName = "DHpublickey";
break;
case "EMAID":
messageName = "eMAID";
break;
case "ContractSignatureEncryptedPrivateKey":
messageName = "ContractSignatureEncryptedPrivateKey";
break;
case "SalesTariff": // SalesTariff is not defined in MsgBody XSD schema, but MsgDataTypes XSD schema
namespace = GlobalValues.V2G_CI_MSG_DATATYPES_NAMESPACE.toString();
break;
default:
break;
}
}
jaxbElement = new JAXBElement<T>(new QName(namespace, messageName),
(Class<T>) messageOrField.getClass(),
messageOrField);
return jaxbElement;
}
public Logger getLogger() {
return logger;
}
public ExiCodec getExiCodec() {
return exiCodec;
}
public void setExiCodec(ExiCodec exiCodec) {
this.exiCodec = exiCodec;
SecurityUtils.setExiCodec(exiCodec);
}
public JAXBContext getJaxbContext() {
return jaxbContext;
}
private void setJaxbContext(JAXBContext jaxbContext) {
this.jaxbContext = jaxbContext;
}
public synchronized void setJaxbContext(@SuppressWarnings("rawtypes") Class... classesToBeBound) {
try {
setJaxbContext(JAXBContext.newInstance(classesToBeBound));
// Every time we set the JAXBContext, we need to also set the marshaller and unmarshaller for EXICodec
getExiCodec().setUnmarshaller(getJaxbContext().createUnmarshaller());
getExiCodec().setMarshaller(getJaxbContext().createMarshaller());
/*
* JAXB by default silently ignores errors. Adding this code to throw an exception if
* something goes wrong.
*/
getExiCodec().getUnmarshaller().setEventHandler(
new ValidationEventHandler() {
@Override
public boolean handleEvent(ValidationEvent event ) {
throw new RuntimeException(event.getMessage(),
event.getLinkedException());
}
});
} catch (JAXBException e) {
getLogger().error("A JAXBException occurred while trying to set JAXB context", e);
}
}
}

View File

@@ -0,0 +1,29 @@
/*******************************************************************************
* The MIT License (MIT)
*
* Copyright (c) 2015 - 2019 Dr. Marc Mültin (V2G Clarity)
*
* Permission is hereby granted, free of charge, to any person obtaining a copy
* of this software and associated documentation files (the "Software"), to deal
* in the Software without restriction, including without limitation the rights
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
* copies of the Software, and to permit persons to whom the Software is
* furnished to do so, subject to the following conditions:
*
* The above copyright notice and this permission notice shall be included in
* all copies or substantial portions of the Software.
*
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
* THE SOFTWARE.
*******************************************************************************/
package com.v2gclarity.risev2g.shared.messageHandling;
public class PauseSession extends ReactionToIncomingMessage {
public PauseSession() {}
}

View File

@@ -0,0 +1,30 @@
/*******************************************************************************
* The MIT License (MIT)
*
* Copyright (c) 2015 - 2019 Dr. Marc Mültin (V2G Clarity)
*
* Permission is hereby granted, free of charge, to any person obtaining a copy
* of this software and associated documentation files (the "Software"), to deal
* in the Software without restriction, including without limitation the rights
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
* copies of the Software, and to permit persons to whom the Software is
* furnished to do so, subject to the following conditions:
*
* The above copyright notice and this permission notice shall be included in
* all copies or substantial portions of the Software.
*
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
* THE SOFTWARE.
*******************************************************************************/
package com.v2gclarity.risev2g.shared.messageHandling;
public abstract class ReactionToIncomingMessage {
public ReactionToIncomingMessage() {}
}

View File

@@ -0,0 +1,93 @@
/*******************************************************************************
* The MIT License (MIT)
*
* Copyright (c) 2015 - 2019 Dr. Marc Mültin (V2G Clarity)
*
* Permission is hereby granted, free of charge, to any person obtaining a copy
* of this software and associated documentation files (the "Software"), to deal
* in the Software without restriction, including without limitation the rights
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
* copies of the Software, and to permit persons to whom the Software is
* furnished to do so, subject to the following conditions:
*
* The above copyright notice and this permission notice shall be included in
* all copies or substantial portions of the Software.
*
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
* THE SOFTWARE.
*******************************************************************************/
package com.v2gclarity.risev2g.shared.messageHandling;
import com.v2gclarity.risev2g.shared.misc.State;
import com.v2gclarity.risev2g.shared.misc.TimeRestrictions;
/**
* There are four possible outcomes of processing an incoming message at the respective state
* 1. The server generates a response message to a processed request message
* 2. The client generates a new request message following a processed response message
* 3. Either side switches to another state which shall process the incoming message
* 4. The message cannot be processed at this state -> terminate session
*/
public class SendMessage extends ReactionToIncomingMessage {
private Object payload;
private boolean supportedAppProtocolHandshake;
private State nextState;
private int timeout;
public SendMessage(Object payload, State newState) {
this(payload, false, newState, TimeRestrictions.V2G_SECC_SEQUENCE_TIMEOUT);
}
public SendMessage(Object payload, State newState, int timeout) {
this(payload, false, newState, timeout);
}
/**
* Similar to the constructor which has a timeout, except that the server has only one timeout,
* namely the V2G_Message_Sequence_Timeout, which is message independent and does not need
* to be provided additionally.
*
* @param payload
* @param supportedAppProtocolHandshake
* @param nextState
* @param stopV2GCommunicationSession
*/
public SendMessage(Object payload, boolean supportedAppProtocolHandshake, State nextState) {
this(payload, supportedAppProtocolHandshake, nextState, TimeRestrictions.V2G_SECC_SEQUENCE_TIMEOUT);
}
public SendMessage(
Object payload,
boolean supportedAppProtocolHandshake,
State nextState,
int timeout) {
super();
this.payload = payload;
this.supportedAppProtocolHandshake = supportedAppProtocolHandshake;
this.nextState = nextState;
this.timeout = timeout;
}
public Object getPayload() {
return payload;
}
public boolean isSupportedAppProtocolHandshake() {
return supportedAppProtocolHandshake;
}
public State getNextState() {
return nextState;
}
public int getTimeout() {
return timeout;
}
}

View File

@@ -0,0 +1,58 @@
/*******************************************************************************
* The MIT License (MIT)
*
* Copyright (c) 2015 - 2019 Dr. Marc Mültin (V2G Clarity)
*
* Permission is hereby granted, free of charge, to any person obtaining a copy
* of this software and associated documentation files (the "Software"), to deal
* in the Software without restriction, including without limitation the rights
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
* copies of the Software, and to permit persons to whom the Software is
* furnished to do so, subject to the following conditions:
*
* The above copyright notice and this permission notice shall be included in
* all copies or substantial portions of the Software.
*
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
* THE SOFTWARE.
*******************************************************************************/
package com.v2gclarity.risev2g.shared.messageHandling;
public class TerminateSession extends ReactionToIncomingMessage {
private String reasonForSessionStop;
private boolean successfulTermination;
/**
* This constructor is to be used if the session stops because of an error which automatically
* sets the Boolean parameter successfulTermination to false.
* @param reasonForSessionStop The reason for session termination
*/
public TerminateSession(String reasonForSessionStop) {
this(reasonForSessionStop, false);
}
public TerminateSession(String reasonForSessionStop, boolean successfulTermination) {
super();
this.reasonForSessionStop = reasonForSessionStop;
this.successfulTermination = successfulTermination;
}
public String getReasonForSessionStop() {
return reasonForSessionStop;
}
public boolean isSuccessfulTermination() {
return successfulTermination;
}
public void setSuccessfulTermination(boolean successfulTermination) {
this.successfulTermination = successfulTermination;
}
}

View File

@@ -0,0 +1,160 @@
/*******************************************************************************
* The MIT License (MIT)
*
* Copyright (c) 2015 - 2019 Dr. Marc Mültin (V2G Clarity)
*
* Permission is hereby granted, free of charge, to any person obtaining a copy
* of this software and associated documentation files (the "Software"), to deal
* in the Software without restriction, including without limitation the rights
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
* copies of the Software, and to permit persons to whom the Software is
* furnished to do so, subject to the following conditions:
*
* The above copyright notice and this permission notice shall be included in
* all copies or substantial portions of the Software.
*
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
* THE SOFTWARE.
*******************************************************************************/
package com.v2gclarity.risev2g.shared.misc;
import java.security.interfaces.ECPrivateKey;
import java.util.HashMap;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
import com.v2gclarity.risev2g.shared.enumerations.V2GMessages;
import com.v2gclarity.risev2g.shared.messageHandling.MessageHandler;
import com.v2gclarity.risev2g.shared.messageHandling.ReactionToIncomingMessage;
import com.v2gclarity.risev2g.shared.messageHandling.SendMessage;
import com.v2gclarity.risev2g.shared.v2gMessages.msgDef.BodyBaseType;
import com.v2gclarity.risev2g.shared.v2gMessages.msgDef.V2GMessage;
public abstract class State {
private Logger logger = LogManager.getLogger(this.getClass().getSimpleName());
private State nextState = null;
private MessageHandler messageHandler;
private V2GCommunicationSession commSessionContext;
private HashMap<String, byte[]> xmlSignatureRefElements;
private ECPrivateKey signaturePrivateKey;
public State(V2GCommunicationSession commSessionContext) {
setCommSessionContext(commSessionContext);
setMessageHandler(commSessionContext.getMessageHandler());
setXMLSignatureRefElements(new HashMap<String, byte[]>());
}
public abstract ReactionToIncomingMessage processIncomingMessage(Object message);
public SendMessage getSendMessage(
BodyBaseType message,
V2GMessages nextExpectedMessage) {
int timeout = getTimeout(message, nextExpectedMessage);
return getSendMessage(message, nextExpectedMessage, "", timeout);
}
public SendMessage getSendMessage(
BodyBaseType message,
V2GMessages nextExpectedMessage,
String optionalLoggerInfo) {
int timeout = getTimeout(message, nextExpectedMessage);
return getSendMessage(message, nextExpectedMessage, optionalLoggerInfo, timeout);
}
public int getTimeout(BodyBaseType message, V2GMessages nextExpectedMessage) {
String messageName = message.getClass().getSimpleName().replace("Type", "");
// If the sent message is a response message, 60s sequence timeout is used
if (messageName.endsWith("Res")) return TimeRestrictions.V2G_SECC_SEQUENCE_TIMEOUT;
// otherwise the message specific timeout
else return TimeRestrictions.getV2gEvccMsgTimeout(nextExpectedMessage);
}
protected SendMessage getSendMessage(
BodyBaseType message,
V2GMessages nextExpectedMessage,
int timeout) {
return getSendMessage(message, nextExpectedMessage, "", timeout);
}
protected SendMessage getSendMessage(
BodyBaseType message,
V2GMessages nextExpectedMessage,
String optionalLoggerInfo,
int timeout) {
String messageName = message.getClass().getSimpleName().replace("Type", "");
V2GMessage v2gMessage = getMessageHandler().getV2GMessage(
getCommSessionContext().getSessionID(),
getXMLSignatureRefElements(),
getSignaturePrivateKey(),
getCommSessionContext().getMessageHandler().getJaxbElement(message)
);
getLogger().debug("Preparing to send " + messageName + " " + optionalLoggerInfo);
return new SendMessage(v2gMessage,
getCommSessionContext().getStates().get(nextExpectedMessage),
timeout
);
}
public Logger getLogger() {
return logger;
}
public State getNextState() {
return nextState;
}
/**
* If a session is to be terminated, then 'null' is to be provided as parameter since the
* complete session context is removed and the TCP/TLS connection is terminated
* @param nextState The next state which shall process incoming messages
*/
public void setNextState(State nextState) {
this.nextState = nextState;
}
public MessageHandler getMessageHandler() {
return messageHandler;
}
public void setMessageHandler(MessageHandler messageHandler) {
this.messageHandler = messageHandler;
}
public V2GCommunicationSession getCommSessionContext() {
return commSessionContext;
}
public void setCommSessionContext(V2GCommunicationSession commSessionContext) {
this.commSessionContext = commSessionContext;
}
public HashMap<String, byte[]> getXMLSignatureRefElements() {
return xmlSignatureRefElements;
}
public void setXMLSignatureRefElements(HashMap<String, byte[]> xmlSignatureRefElements) {
this.xmlSignatureRefElements = xmlSignatureRefElements;
}
public ECPrivateKey getSignaturePrivateKey() {
return signaturePrivateKey;
}
public void setSignaturePrivateKey(ECPrivateKey signaturePrivateKey) {
this.signaturePrivateKey = signaturePrivateKey;
}
}

View File

@@ -0,0 +1,83 @@
/*******************************************************************************
* The MIT License (MIT)
*
* Copyright (c) 2015 - 2019 Dr. Marc Mültin (V2G Clarity)
*
* Permission is hereby granted, free of charge, to any person obtaining a copy
* of this software and associated documentation files (the "Software"), to deal
* in the Software without restriction, including without limitation the rights
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
* copies of the Software, and to permit persons to whom the Software is
* furnished to do so, subject to the following conditions:
*
* The above copyright notice and this permission notice shall be included in
* all copies or substantial portions of the Software.
*
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
* THE SOFTWARE.
*******************************************************************************/
package com.v2gclarity.risev2g.shared.misc;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
import com.v2gclarity.risev2g.shared.enumerations.V2GMessages;
public class TimeRestrictions {
private static Logger logger = LogManager.getLogger(TimeRestrictions.class.getSimpleName());
public static final int V2G_EVCC_SEQUENCE_PERFORMANCE_TIME = 40000;
public static final int V2G_SECC_SEQUENCE_TIMEOUT = 60000;
public static final int V2G_EVCC_ONGOING_TIMEOUT = 60000;
public static final int V2G_EVCC_CABLE_CHECK_TIMEOUT = 40000;
public static final int V2G_EVCC_PRE_CHARGE_TIMEOUT = 7000;
/**
* SDP client shall wait for SECC Discovery Response message for _at least_ 250 ms (see [V2G2-159])
*/
public static final int SDP_RESPONSE_TIMEOUT = 250;
/**
* A maximum of 50 consecutive SECC Discovery Request messages is allowed (see [V2G-161])
*/
public static final int SDP_REQUEST_MAX_COUNTER = 50;
/**
* Timeout for the communication setup timer, includes time span ...
* - from: plug present (state B transition)
* - until: SessionSetupRes
*/
public static final int V2G_EVCC_COMMUNICATION_SETUP_TIMEOUT = 20000;
public static int getV2gEvccMsgTimeout(V2GMessages messageType) {
switch(messageType) {
case SUPPORTED_APP_PROTOCOL_RES : return 2000;
case SESSION_SETUP_RES: return 2000;
case SERVICE_DISCOVERY_RES: return 2000;
case SERVICE_DETAIL_RES: return 5000;
case PAYMENT_SERVICE_SELECTION_RES: return 2000;
case PAYMENT_DETAILS_RES: return 5000;
case AUTHORIZATION_RES: return 2000;
case CHARGE_PARAMETER_DISCOVERY_RES: return 2000;
case CHARGING_STATUS_RES: return 2000;
case METERING_RECEIPT_RES: return 2000;
case POWER_DELIVERY_RES: return 5000;
case CABLE_CHECK_RES: return 2000;
case PRE_CHARGE_RES: return 2000;
case CURRENT_DEMAND_RES: return 250;
case WELDING_DETECTION_RES: return 2000;
case SESSION_STOP_RES: return 2000;
case CERTIFICATE_INSTALLATION_RES: return 5000;
case CERTIFICATE_UPDATE_RES: return 5000;
default: {
logger.error("MessageType '" + messageType + "' does not have a timeout value assigend. Timeout value 0 returned");
return 0;
}
}
}
}

View File

@@ -0,0 +1,209 @@
/*******************************************************************************
* The MIT License (MIT)
*
* Copyright (c) 2015 - 2019 Dr. Marc Mültin (V2G Clarity)
*
* Permission is hereby granted, free of charge, to any person obtaining a copy
* of this software and associated documentation files (the "Software"), to deal
* in the Software without restriction, including without limitation the rights
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
* copies of the Software, and to permit persons to whom the Software is
* furnished to do so, subject to the following conditions:
*
* The above copyright notice and this permission notice shall be included in
* all copies or substantial portions of the Software.
*
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
* THE SOFTWARE.
*******************************************************************************/
package com.v2gclarity.risev2g.shared.misc;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.HashMap;
import java.util.Observable;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
import com.v2gclarity.risev2g.shared.enumerations.V2GMessages;
import com.v2gclarity.risev2g.shared.messageHandling.MessageHandler;
import com.v2gclarity.risev2g.shared.messageHandling.PauseSession;
import com.v2gclarity.risev2g.shared.messageHandling.TerminateSession;
import com.v2gclarity.risev2g.shared.utils.ByteUtils;
import com.v2gclarity.risev2g.shared.utils.MiscUtils;
import com.v2gclarity.risev2g.shared.utils.SecurityUtils;
import com.v2gclarity.risev2g.shared.v2gMessages.msgDef.EnergyTransferModeType;
import com.v2gclarity.risev2g.shared.v2gMessages.msgDef.PaymentOptionListType;
import com.v2gclarity.risev2g.shared.v2gMessages.msgDef.PaymentOptionType;
import com.v2gclarity.risev2g.shared.v2gMessages.msgDef.V2GMessage;
public abstract class V2GCommunicationSession extends Observable {
private Logger logger = LogManager.getLogger(this.getClass().getSimpleName());
private HashMap<V2GMessages, State> states;
private State currentState;
private State startState;
private MessageHandler messageHandler;
private byte[] sessionID;
private V2GTPMessage v2gTpMessage;
private V2GMessage v2gMessage;
private boolean tlsConnection;
public V2GCommunicationSession() {
setStates(new HashMap<V2GMessages, State>());
setMessageHandler(MessageHandler.getInstance());
setSessionID(null);
setV2gTpMessage(null);
}
/**
* Generates randomly a new session ID (with length of 8 bytes) and takes care that the newly generated
* session ID does not match the store previous session ID and that it is unequal to 0.
* @return The byte array representation of the provided session ID
*/
public byte[] generateSessionIDRandomly() {
byte[] sessionID = new byte[8];
while (sessionID == null || ByteUtils.toLongFromByteArray(sessionID) == 0L || Arrays.equals(sessionID, getSessionID())) {
sessionID = SecurityUtils.generateRandomNumber(8);
}
return sessionID;
}
protected void pauseSession(PauseSession pauseObject) {
getLogger().info("Pausing V2G communication session");
setChanged();
notifyObservers(pauseObject);
}
protected void terminateSession(TerminateSession termination) {
String terminationPrefix = "Terminating V2G communication session, reason: ";
if (termination.isSuccessfulTermination()) {
getLogger().info(terminationPrefix + termination.getReasonForSessionStop());
} else {
getLogger().warn(terminationPrefix + termination.getReasonForSessionStop());
}
setChanged();
notifyObservers(termination);
}
/**
* Should be used if no TerminateSession instance has been provided by the respective state
* but some other case causes a session termination
*
* @param reason The termination cause
* @param successful True, in case of a successful session termination, false otherwise
*/
protected void terminateSession(String reason, boolean successful) {
String terminationPrefix = "Terminating V2G communication session, reason: ";
TerminateSession termination = new TerminateSession(reason, successful);
if (successful) getLogger().debug(terminationPrefix + reason);
else getLogger().error(terminationPrefix + reason);
setChanged();
notifyObservers(termination);
}
public ArrayList<EnergyTransferModeType> getSupportedEnergyTransferModes() {
@SuppressWarnings("unchecked")
ArrayList<EnergyTransferModeType> energyTransferModes =
(MiscUtils.getPropertyValue("energy.transfermodes.supported") != null) ?
((ArrayList<EnergyTransferModeType>) MiscUtils.getPropertyValue("energy.transfermodes.supported")) :
new ArrayList<EnergyTransferModeType>();
return energyTransferModes;
}
public Logger getLogger() {
return logger;
}
public HashMap<V2GMessages, State> getStates() {
return states;
}
public void setStates(HashMap<V2GMessages, State> states) {
this.states = states;
}
public State getCurrentState() {
return currentState;
}
public void setCurrentState(State newState) {
this.currentState = newState;
if (newState == null) {
getLogger().error("New state is not provided (null)");
} else {
getLogger().debug("New state is " + this.currentState.getClass().getSimpleName());
}
}
public State getStartState() {
return startState;
}
public void setStartState(State startState) {
this.startState = startState;
}
public MessageHandler getMessageHandler() {
return messageHandler;
}
public byte[] getSessionID() {
return sessionID;
}
public void setSessionID(byte[] sessionID) {
if (sessionID == null) {
sessionID = ByteUtils.toByteArrayFromHexString("00");
}
this.sessionID = sessionID;
}
public V2GTPMessage getV2gTpMessage() {
return v2gTpMessage;
}
public void setV2gTpMessage(V2GTPMessage v2gTpMessage) {
this.v2gTpMessage = v2gTpMessage;
}
public void setMessageHandler(MessageHandler messageHandler) {
this.messageHandler = messageHandler;
}
public V2GMessage getV2gMessage() {
return v2gMessage;
}
public void setV2gMessage(V2GMessage v2gMessage) {
this.v2gMessage = v2gMessage;
}
public boolean isTlsConnection() {
return tlsConnection;
}
public void setTlsConnection(boolean tlsConnection) {
this.tlsConnection = tlsConnection;
}
}

View File

@@ -0,0 +1,63 @@
/*******************************************************************************
* The MIT License (MIT)
*
* Copyright (c) 2015 - 2019 Dr. Marc Mültin (V2G Clarity)
*
* Permission is hereby granted, free of charge, to any person obtaining a copy
* of this software and associated documentation files (the "Software"), to deal
* in the Software without restriction, including without limitation the rights
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
* copies of the Software, and to permit persons to whom the Software is
* furnished to do so, subject to the following conditions:
*
* The above copyright notice and this permission notice shall be included in
* all copies or substantial portions of the Software.
*
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
* THE SOFTWARE.
*******************************************************************************/
package com.v2gclarity.risev2g.shared.misc;
import com.v2gclarity.risev2g.shared.utils.MiscUtils;
/**
* This class serves as the base for implementation factory
* classes used in the SE/EV projects
* It will look up and instantiate a class based on a
* configuration property
*/
public abstract class V2GImplementationFactory {
/**
* Builds an object instance from the configuration properties
* The configuration should hold the class of the instance that
* will be built.
* @param propertyName Name of the property that contains the fully qualified class name
* @param cls Target class of the build instance
* @return
*/
protected static <T> T buildFromProperties(String propertyName, Class<T> cls) {
try {
String className = MiscUtils.getProperties().getProperty(propertyName);
if (className == null) {
return null;
}
Object instance = Class.forName(className).newInstance();
if (!cls.isInstance(instance)) {
throw new Exception("Instantiated object does not match the expected type " + cls.getCanonicalName());
}
return cls.cast(instance);
} catch (Exception e) {
throw new RuntimeException("Could not instantiate implementations class for property " + propertyName, e);
}
}
}

View File

@@ -0,0 +1,181 @@
/*******************************************************************************
* The MIT License (MIT)
*
* Copyright (c) 2015 - 2019 Dr. Marc Mültin (V2G Clarity)
*
* Permission is hereby granted, free of charge, to any person obtaining a copy
* of this software and associated documentation files (the "Software"), to deal
* in the Software without restriction, including without limitation the rights
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
* copies of the Software, and to permit persons to whom the Software is
* furnished to do so, subject to the following conditions:
*
* The above copyright notice and this permission notice shall be included in
* all copies or substantial portions of the Software.
*
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
* THE SOFTWARE.
*******************************************************************************/
package com.v2gclarity.risev2g.shared.misc;
import java.nio.Buffer;
import java.nio.ByteBuffer;
import java.util.Arrays;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
import com.v2gclarity.risev2g.shared.utils.ByteUtils;
public class V2GTPMessage {
private Logger logger = LogManager.getLogger(this.getClass().getSimpleName());
private byte protocolVersion;
private byte inverseProtocolVersion;
private byte[] payload;
private byte[] payloadType;
private byte[] payloadLength;
private byte[] header = new byte[8];
private byte[] message;
/**
* Constructs a V2G Transfer Protocol message containing the header (which consists of the protocol version,
* the inverse protocol version, the payload type and payload length) and the payload.
*
* @param protocolVersion The protocol version to be used
* @param payloadType The type of the payload (EXI encoded message, SDP request or response)
* @param payload The payload of the message to be sent
*/
public V2GTPMessage(byte protocolVersion, byte[] payloadType, byte[] payloadLength, byte[] payload) {
setProtocolVersion(protocolVersion);
setInverseProtocolVersion((byte) (protocolVersion ^ 0xFF));
setPayloadType(payloadType);
setPayloadLength(payloadLength);
setPayload(payload);
}
/**
*
*
* @param protocolVersion
* @param payloadType
* @param payload
*/
public V2GTPMessage(byte protocolVersion, byte[] payloadType, byte[] payload) {
setProtocolVersion(protocolVersion);
setInverseProtocolVersion((byte) (protocolVersion ^ 0xFF));
setPayloadType(payloadType);
setPayloadLength(ByteUtils.toByteArrayFromInt(payload.length, false));
setPayload(payload);
}
/**
* Constructs a V2G Transfer Protocol message containing the header (which consists of the protocol version,
* the inverse protocol version, the payload type and payload length) and the payload.
*
* @param byteArray The respective fields of the V2G Transfer Protocol message are set by assigning the
* respective bytes from the array to the fields.
*/
public V2GTPMessage(byte[] byteArray) {
// Check if this could be a real V2GTPMessage which has 8 bytes of header
if (byteArray != null && byteArray.length >= 8) {
setProtocolVersion(Arrays.copyOfRange(byteArray, 0, 1)[0]);
setInverseProtocolVersion(Arrays.copyOfRange(byteArray, 1, 2)[0]);
setPayloadType(Arrays.copyOfRange(byteArray, 2, 4));
setPayloadLength(Arrays.copyOfRange(byteArray, 4, 8));
// TODO make sure the byteArray is not too long to not generate a Java heap space OutOfMemoryError
setPayload(Arrays.copyOfRange(byteArray, 8, byteArray.length));
} else {
getLogger().error("Received byte array does not match a V2GTPMessage");
}
}
public byte getProtocolVersion() {
return protocolVersion;
}
public void setProtocolVersion(byte protocolVersion) {
this.protocolVersion = protocolVersion;
setInverseProtocolVersion(protocolVersion);
}
public byte getInverseProtocolVersion() {
return inverseProtocolVersion;
}
private void setInverseProtocolVersion(byte inverseProtocolVersion) {
this.inverseProtocolVersion = inverseProtocolVersion;
}
public byte[] getPayload() {
return payload;
}
public void setPayload(byte[] payload) {
this.payload = payload;
}
public byte[] getPayloadType() {
return payloadType;
}
public void setPayloadType(byte[] payloadType) {
this.payloadType = payloadType;
}
public byte[] getPayloadLength() {
return payloadLength;
}
private void setPayloadLength(byte[] payloadLength) {
this.payloadLength = payloadLength;
}
/**
* Returns a byte array representation of the V2GTPMessage. This byte array contains the
* protocolVersion, inverseProtocolVersion, payloadType, payloadLength and the payload itself.
* <p>
* @return byte[] The V2GTPMessage byte array
*/
public byte[] getMessage() {
// Remark: The order of a newly created byte buffer is always big endian (see [V2G2-085] on page 27)
ByteBuffer messageBuffer = ByteBuffer.allocate(8 + this.getPayload().length);
messageBuffer.put(this.protocolVersion)
.put(this.inverseProtocolVersion)
.put(this.payloadType)
.put(this.payloadLength)
.put(this.getPayload());
this.message = new byte[messageBuffer.capacity()];
// Sets the messageBuffers's position in order for the .get() message to work without
// throwing a BufferUnderflowException
((Buffer)messageBuffer).position(0);
messageBuffer.get(this.message);
return this.message;
}
public Logger getLogger() {
return logger;
}
public void setLogger(Logger logger) {
this.logger = logger;
}
public byte[] getHeader() {
return header;
}
public void setHeader(byte[] header) {
this.header = header;
}
}

View File

@@ -0,0 +1,247 @@
/*******************************************************************************
* The MIT License (MIT)
*
* Copyright (c) 2015 - 2019 Dr. Marc Mültin (V2G Clarity)
*
* Permission is hereby granted, free of charge, to any person obtaining a copy
* of this software and associated documentation files (the "Software"), to deal
* in the Software without restriction, including without limitation the rights
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
* copies of the Software, and to permit persons to whom the Software is
* furnished to do so, subject to the following conditions:
*
* The above copyright notice and this permission notice shall be included in
* all copies or substantial portions of the Software.
*
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
* THE SOFTWARE.
*******************************************************************************/
package com.v2gclarity.risev2g.shared.utils;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.nio.BufferOverflowException;
import java.nio.Buffer;
import java.nio.ByteBuffer;
import javax.xml.bind.DatatypeConverter;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
public final class ByteUtils {
static Logger logger = LogManager.getLogger(MiscUtils.class.getSimpleName());
public static Logger getLogger() {
return logger;
}
/**
* Returns a hexadecimal string from a given byte array.
*
* @param array The byte array which is to transformed into a hexadecimal string
* @return The hexadecimal string
*/
public static String toHexString(byte[] array) {
if (array != null)
return DatatypeConverter.printHexBinary(array);
else
return "";
}
/**
* Returns a byte array from a given hex string.
*
* @param hexString The hexadecimal string representing a byte array. The lexical value space
* defined in XML Schema Part 2: Datatypes for xsd:hexBinary is expected:
* "hexBinary has a lexical representation where each binary octet is encoded
* as a character tuple, consisting of two hexadecimal digits ([0-9a-fA-F])
* representing the octet code. For example, '0FB7' is a hex encoding for the
* 16-bit integer 4023 (whose binary representation is 111110110111)."
* @return A byte array representing the hexadecimal string
* @throws IllegalArgumentException Passes on the IllegalArgumentException from the method DatatypeConverter.parseHexBinary()
* so that the caller can appropriately handle the execption
*/
public static byte[] toByteArrayFromHexString(String s) throws IllegalArgumentException {
return DatatypeConverter.parseHexBinary(s);
}
/**
* Returns a byte from a given hex string. Be careful to provide only a hex string which represents only
* one byte because only the first byte of the newly created byte array will be returned.
*
* @param hexString The hexadecimal string representing a byte
* @return One byte representing the hexadecimal string. If the hex string would represent more than
* one byte, then the remaining byteArraySize-firstByte bytes are cut off.
*/
public static byte toByteFromHexString(String hexString) {
byte[] byteArray = DatatypeConverter.parseHexBinary(hexString);
return byteArray[0];
}
/**
* Converts an integer (which in Java is a signed four bytes value) into a byte array
* @param intValue The integer value which is to be converted to a byte array
* @param shortSize Determines if the integer value shall be represented as a 4-byte or a 2-byte array.
* Example: A port number between 49152 and 65535 for UDP client or TCP server is represented
* by a (signed) integer value with 4 bytes in Java. The SECCDiscoveryResponse, however, holds
* only two bytes for the port, thus the leading 16 bytes consisting of 0s must be cut off.
* @return The byte array corresponding to the given integer value, either with a size of 2 or 4 bytes.
*/
public static byte[] toByteArrayFromInt(int intValue, boolean shortSize) {
byte[] tempArr = ByteBuffer.allocate(4).putInt(intValue).array();
byte[] retArr;
if (shortSize) {
retArr = ByteBuffer.allocate(2).put(tempArr, 2, 2).array();
} else {
retArr = tempArr;
}
return retArr;
}
/**
* Converts a long (which in Java is a signed eight bytes value) into a byte array
* @param longValue The long value which is to be converted to a byte array
* @return The byte array corresponding to the given long value
*/
public static byte[] toByteArrayFromLong(long longValue) {
return ByteBuffer.allocate(8).putLong(longValue).array();
}
/**
* Returns a string of 0s and 1s reflecting the byte array which was provided as input.
* This method can be used for debugging purposes.
*
* @param byteArray The byte array which is to represent as a string of 0s and 1s
* @return A string representing the bit values of the byte array
*/
public static String toStringFromByteArray(byte[] byteArray) {
StringBuffer byteArrayString = new StringBuffer();
for (byte b : byteArray) {
for (int mask = 0x80; mask != 0x00; mask >>= 1) {
boolean value = ( b & mask ) != 0;
char valueChar = (value) ? '1' : '0';
byteArrayString.append(valueChar);
}
byteArrayString.append(" ");
}
return byteArrayString.toString();
}
/**
* Returns a string of 0s and 1s reflecting the byte which was provided as input.
* This method can be used for debugging purposes.
*
* @param byteValue The byte which is to represent as a string of 0s and 1s
* @return A string representing the bit values of the byte
*/
public static String toStringFromByte(byte byteValue) {
StringBuffer byteArrayString = new StringBuffer();
for (int mask = 0x80; mask != 0x00; mask >>= 1) {
boolean value = ( byteValue & mask ) != 0;
char valueChar = (value) ? '1' : '0';
byteArrayString.append(valueChar);
}
return byteArrayString.toString();
}
/**
* Returns an integer value out of a byte array.
*
* @param byteArray The byte array to be converted into its decimal representation
* @return The integer value representing the byte array
*/
public static int toIntFromByteArray(byte[] byteArray) {
// Allocating a byte buffer holding 4 bytes for the int value
ByteBuffer bb = ByteBuffer.allocate(4);
/*
* The given byte array might hold less than 4 bytes, e.g. the SECC port of the SECC Discovery
* Response only holds 2 bytes. Thus, we must account for this and guarantee the Big Endian
* byte order.
*/
((Buffer)bb).position(4 - byteArray.length);
bb.put(byteArray);
// Setting the current position to 0, otherwise getInt() would throw a BufferUnderflowException
((Buffer)bb).position(0);
return bb.getInt();
}
/**
* Returns a long value out of a byte array.
*
* @param byteArray The byte array to be converted into its decimal representation
* @return The long value representing the byte array
*/
public static long toLongFromByteArray(byte[] byteArray) {
// Allocating a byte buffer holding 8 bytes for the long value
ByteBuffer bb = ByteBuffer.allocate(8);
// In case the provided byte array is smaller than 8 bytes (e.g. int has 4 bytes), take care that they are placed at the right-most position
if (byteArray.length < 8) {
((Buffer)bb).position(8-byteArray.length);
bb.put(byteArray);
} else {
try {
bb.put(byteArray);
} catch (BufferOverflowException e) {
getLogger().warn("Byte array length is too big (" + byteArray.length + " bytes) to be converted " +
"into a long value. Only the right-most 8 bytes (least significant bytes " +
"according to Big Endian) are used.", e);
((Buffer)bb).position(0);
bb.put(byteArray, byteArray.length - 8, byteArray.length);
}
}
// Setting the current position to 0, otherwise getLong() would throw a BufferUnderflowException
((Buffer)bb).position(0);
return bb.getLong();
}
public OutputStream inputStreamToOutputStream(InputStream input, OutputStream output) {
byte[] buffer = new byte[1024];
int bytesRead;
try {
while ((bytesRead = input.read(buffer)) != -1) {
output.write(buffer, 0, bytesRead);
}
return output;
} catch (IOException e) {
getLogger().error("IOException while trying to write InputStream to OutputStream");
return null;
}
}
public static byte[] intToFourBytes(int i) {
byte[] res = new byte[4];
res[0] = (byte) (i >>> 24);
res[1] = (byte) ((i >>> 16) & 0xFF);
res[2] = (byte) ((i >>> 8) & 0xFF);
res[3] = (byte) (i & 0xFF);
return res;
}
}

View File

@@ -0,0 +1,321 @@
/*******************************************************************************
* The MIT License (MIT)
*
* Copyright (c) 2015 - 2019 Dr. Marc Mültin (V2G Clarity)
*
* Permission is hereby granted, free of charge, to any person obtaining a copy
* of this software and associated documentation files (the "Software"), to deal
* in the Software without restriction, including without limitation the rights
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
* copies of the Software, and to permit persons to whom the Software is
* furnished to do so, subject to the following conditions:
*
* The above copyright notice and this permission notice shall be included in
* all copies or substantial portions of the Software.
*
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
* THE SOFTWARE.
*******************************************************************************/
package com.v2gclarity.risev2g.shared.utils;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.net.Inet6Address;
import java.net.InetAddress;
import java.net.NetworkInterface;
import java.net.SocketException;
import java.util.ArrayList;
import java.util.Enumeration;
import java.util.Properties;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
import com.v2gclarity.risev2g.shared.enumerations.GlobalValues;
import com.v2gclarity.risev2g.shared.enumerations.V2GMessages;
import com.v2gclarity.risev2g.shared.v2gMessages.msgDef.EnergyTransferModeType;
import com.v2gclarity.risev2g.shared.v2gMessages.msgDef.PaymentOptionType;
import com.v2gclarity.risev2g.shared.v2gMessages.msgDef.SupportedEnergyTransferModeType;
public final class MiscUtils {
static Logger logger = LogManager.getLogger(MiscUtils.class.getSimpleName());
static V2GMessages[] messageTypes = V2GMessages.values();
static Properties properties;
public static Logger getLogger() {
return logger;
}
/**
* Determines the link-local IPv6 address which is configured on the network interface provided
* in the properties file.
* @return The link-local address given as a String
*/
public static Inet6Address getLinkLocalAddress() {
String networkInterfaceConfig = getPropertyValue("network.interface").toString();
NetworkInterface nif = null;
try {
if (System.getProperty("os.name").toLowerCase().indexOf("win") >= 0) {
nif = NetworkInterface.getByIndex(Integer.parseInt(networkInterfaceConfig));
} else {
nif = NetworkInterface.getByName(networkInterfaceConfig);
}
Enumeration<InetAddress> inetAddresses = nif.getInetAddresses();
while (inetAddresses.hasMoreElements()) {
InetAddress inetAddress = inetAddresses.nextElement();
if (inetAddress.getClass() == Inet6Address.class && inetAddress.isLinkLocalAddress()) {
return (Inet6Address) inetAddress;
}
}
getLogger().fatal("No IPv6 link-local address found on the network interface '" +
nif.getDisplayName() + "' configured in the properties file");
} catch (SocketException e) {
getLogger().fatal("SocketException while trying to get network interface for configured name " +
networkInterfaceConfig + "'", e);
} catch (NullPointerException | NumberFormatException e2) {
getLogger().fatal("No network interface for configured network interface index '" +
networkInterfaceConfig + "' found");
}
return null;
}
/**
* Is used by the UDP client as well as by the TCP/TLS server whose ports may be in the range
* of 49152 and 65535.
* @return A port number given as an integer value.
*/
public static int getRandomPortNumber() {
return (int) Math.round(Math.random() * (65535-49152)) + 49152;
}
public static byte[] getMacAddress() {
String networkInterfaceConfig = getPropertyValue("network.interface").toString();
NetworkInterface nif = null;
byte[] macAddress = null;
try {
if (System.getProperty("os.name").toLowerCase().indexOf("win") >= 0) {
nif = NetworkInterface.getByIndex(Integer.parseInt(networkInterfaceConfig));
} else {
nif = NetworkInterface.getByName(networkInterfaceConfig);
}
macAddress = nif.getHardwareAddress();
} catch (SocketException e) {
getLogger().error("Failed to retrieve local mac address (SocketException)", e);
}
return macAddress;
}
/**
* This is a more sophisticated method compared to the getProperty(String propertyName) method
* of Java's Properties class. Specific knowledge about the possible values which might be
* mapped to the respective key in the respective properties file of EV or EVSE is incorporated
* in this method. The return value differs depending on the key. Therefore, the return value
* is given as an Object, which again must be casted to the matching type when using this method.
*
* @param propertyKey The key string written in the respective properties file of each V2G entity (EV or EVSE)
* @return An Object holding the data structure fitting for the key (e.g. an Enum value, a Boolean,
* a collection, ...)
*/
public static Object getPropertyValue(String propertyKey) {
Object returnValue = null;
String propertyValue = "";
try {
propertyValue = getProperties().getProperty(propertyKey).replaceAll("\\s", "");
} catch (NullPointerException e) {
getLogger().warn("No entry found in the properties file for property '" + propertyKey + "'", e);
return null;
}
switch (propertyKey) {
case "network.interface": // EV + EVSE property
returnValue = propertyValue;
break;
case "session.id": // EV property
returnValue = propertyValue; // a hexadecimal string representing a byte array
break;
case "energy.transfermodes.supported": // EVSE property
String energyTransferMode = "";
SupportedEnergyTransferModeType supportedEnergyTransferModeType = new SupportedEnergyTransferModeType();
if (!propertyValue.equals("")) {
String[] supportedEnergyTranserModes = propertyValue.split(",");
for (String tmp : supportedEnergyTranserModes) {
energyTransferMode = tmp;
try {
supportedEnergyTransferModeType.getEnergyTransferMode().add(EnergyTransferModeType.fromValue(energyTransferMode));
} catch (IllegalArgumentException e){
getLogger().warn("EnergyTransferModeType '" + energyTransferMode + "' listed in properties file is not supported");
}
}
}
returnValue = supportedEnergyTransferModeType.getEnergyTransferMode();
break;
case "energy.transfermode.requested": // EV property
try {
if (!propertyValue.equals(""))
returnValue = EnergyTransferModeType.fromValue(propertyValue);
} catch (IllegalArgumentException e) {
getLogger().warn("EnergyTransferModeType '" + propertyValue + "' listed in properties file is not supported");
}
break;
case "tls": // EV property (with this code, TLS is always supported on EVSE side)
if (Boolean.parseBoolean(propertyValue)) returnValue = GlobalValues.V2G_SECURITY_WITH_TLS.getByteValue();
else returnValue = GlobalValues.V2G_SECURITY_WITHOUT_TLS.getByteValue();
break;
case "contract.certificate.update.timespan": // EV property
try {
returnValue = Integer.parseInt(propertyValue);
} catch (NumberFormatException e) {
getLogger().warn("ContractCertificateUpdateTimespan '" + propertyValue + "' listed in properties file is not supported. " +
"Setting default value to 14.", e);
getProperties().setProperty("contract.certificate.update.timespan", "14");
returnValue = 14;
}
break;
case "authentication.mode": // EV property
try {
if (!propertyValue.equals(""))
returnValue = PaymentOptionType.fromValue(propertyValue);
} catch (IllegalArgumentException e) {
getLogger().warn("PaymentOptionType '" + propertyValue + "' listed in properties file is not supported");
}
break;
case "authentication.modes.supported": // EVSE property
// The EVCC needs only one selected option, whereas the SECC can offer Contract AND ExternalPayment
String option = "";
ArrayList<PaymentOptionType> paymentOptionsList = new ArrayList<PaymentOptionType>();
if (!propertyValue.equals("")) {
String[] paymentOptions = propertyValue.split(",");
for (String tmp : paymentOptions) {
option = tmp;
try {
paymentOptionsList.add(PaymentOptionType.fromValue(option));
} catch (IllegalArgumentException e) {
getLogger().warn("PaymentOptionType '" + option + "' listed in properties file is not supported");
}
}
}
returnValue = paymentOptionsList;
break;
case "charging.free": // EVSE property
returnValue = Boolean.parseBoolean(propertyValue);
break;
case "environment.private": // EVSE property
returnValue = Boolean.parseBoolean(propertyValue);
break;
case "exi.messages.showxml": // EV + EVSE property
if (Boolean.parseBoolean(propertyValue)) returnValue = true;
else returnValue = false;
break;
case "exi.messages.showhex": // EV + EVSE property
if (Boolean.parseBoolean(propertyValue)) returnValue = true;
else returnValue = false;
break;
case "signature.verification.showlog": // EV + EVSE property
if (Boolean.parseBoolean(propertyValue)) returnValue = true;
else returnValue = false;
break;
case "exi.codec": // EV + EVSE property
if (propertyValue.equals("open_exi")) returnValue = "open_exi";
else returnValue = "exificient";
break;
case "voltage.accuracy": // EV property
try {
returnValue = Integer.parseInt(propertyValue);
} catch (NumberFormatException e) {
getLogger().warn("Voltage accuracy '" + propertyValue + "' listed in properties file is not supported. " +
"Setting default value to 5.", e);
getProperties().setProperty("voltage.accuracy", "5");
returnValue = 5;
}
break;
default:
getLogger().error("No property with name '" + propertyKey + "' found");
}
return returnValue;
}
/**
* Provides the Properties object created upon initialization of the EVCC/SECC instance
* by loading a given .properties file. With the Properties object, one can retrieve the
* (key, value)-pairs which are each given as Strings.
*
* @return The Properties object containing the (key, value)-pairs of the respective properties
* file for the respective V2G entity (EVCC or SECC)
*/
public static Properties getProperties() {
return properties;
}
/**
* Instantiates the properties object with the location of the properties file given as an argument.
* The properties file itself must reside outside the JAR file, at the same level as the JAR file itself,
* because it needs to be editable (JAR file is read-only).
* Therefore, the file is not loaded with getResoruceAsStream(), but with a FileInputStream.
*
* @param propertiesFileLocation The location of the properties file
* @return True, if the properties file could be loaded successfully.
*/
public static boolean loadProperties(String propertiesFileLocation) {
properties = new Properties();
try {
FileInputStream config = new FileInputStream(propertiesFileLocation);
properties.load(config);
config.close();
return true;
} catch (FileNotFoundException e) {
getLogger().error("Properties file location '" + propertiesFileLocation + "' not found (FileNotFoundException)."
+ "Error occurred while trying to set config properties file.");
return false;
} catch (IOException e2) {
getLogger().error("Unable to load properties file at location '" + propertiesFileLocation + "' (IOException)"
+ "Error occurred while trying to set config properties file.");
return false;
}
}
/**
* Stores the current properties into the properties file
*
*/
public static void storeProperties(String propertiesFileLocation) {
try {
FileOutputStream configFile = new FileOutputStream(propertiesFileLocation);
getProperties().store(configFile, "");
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
// getV2gEntityConfig().store(out, "");
}
}

View File

@@ -0,0 +1,43 @@
/*******************************************************************************
* The MIT License (MIT)
*
* Copyright (c) 2015 - 2019 Dr. Marc Mültin (V2G Clarity)
*
* Permission is hereby granted, free of charge, to any person obtaining a copy
* of this software and associated documentation files (the "Software"), to deal
* in the Software without restriction, including without limitation the rights
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
* copies of the Software, and to permit persons to whom the Software is
* furnished to do so, subject to the following conditions:
*
* The above copyright notice and this permission notice shall be included in
* all copies or substantial portions of the Software.
*
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
* THE SOFTWARE.
*******************************************************************************/
package com.v2gclarity.risev2g.shared.utils;
import java.util.concurrent.TimeUnit;
public final class SleepUtils {
public static void safeSleep(final TimeUnit timeUnit, final long duration) {
safeSleep(timeUnit.toMillis(duration));
}
public static void safeSleep(final long durationInMilliSecs) {
try {
Thread.sleep(durationInMilliSecs);
} catch (final InterruptedException e) {
Thread.currentThread().interrupt();
}
}
private SleepUtils() {}
}

View File

@@ -0,0 +1,69 @@
/*******************************************************************************
* The MIT License (MIT)
*
* Copyright (c) 2015 - 2019 Dr. Marc Mültin (V2G Clarity)
*
* Permission is hereby granted, free of charge, to any person obtaining a copy
* of this software and associated documentation files (the "Software"), to deal
* in the Software without restriction, including without limitation the rights
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
* copies of the Software, and to permit persons to whom the Software is
* furnished to do so, subject to the following conditions:
*
* The above copyright notice and this permission notice shall be included in
* all copies or substantial portions of the Software.
*
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
* THE SOFTWARE.
*******************************************************************************/
package com.v2gclarity.risev2g.shared.v2gMessages;
import java.util.Arrays;
public class SECCDiscoveryReq {
private byte security;
private byte transportProtocol;
private byte[] payload = new byte[2];
public SECCDiscoveryReq(byte security, byte transportProtocol) {
this.security = security;
this.transportProtocol = transportProtocol;
}
/*
* REMEMBER THAT THIS BYTE ARRAY IS SUPPOSED JUST TO BE THE PAYLOAD WITHOUT THE HEADER OF THE V2GTPMESSAGE!
*/
public SECCDiscoveryReq(byte[] byteArray) {
setSecurity(Arrays.copyOfRange(byteArray, 0, 1)[0]);
setTransportProtocol(Arrays.copyOfRange(byteArray, 1, 2)[0]);
}
public byte getSecurity() {
return security;
}
public void setSecurity(byte security) {
this.security = security;
}
public byte getTransportProtocol() {
return transportProtocol;
}
public void setTransportProtocol(byte transportProtocol) {
this.transportProtocol = transportProtocol;
}
public byte[] getPayload() {
this.payload[0] = this.security;
this.payload[1] = this.transportProtocol;
return this.payload;
}
}

View File

@@ -0,0 +1,109 @@
/*******************************************************************************
* The MIT License (MIT)
*
* Copyright (c) 2015 - 2019 Dr. Marc Mültin (V2G Clarity)
*
* Permission is hereby granted, free of charge, to any person obtaining a copy
* of this software and associated documentation files (the "Software"), to deal
* in the Software without restriction, including without limitation the rights
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
* copies of the Software, and to permit persons to whom the Software is
* furnished to do so, subject to the following conditions:
*
* The above copyright notice and this permission notice shall be included in
* all copies or substantial portions of the Software.
*
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
* THE SOFTWARE.
*******************************************************************************/
package com.v2gclarity.risev2g.shared.v2gMessages;
import java.nio.Buffer;
import java.nio.ByteBuffer;
import java.util.Arrays;
public class SECCDiscoveryRes {
private byte[] seccIPAddress;
private byte[] seccPort;
private byte security;
private byte transportProtocol;
private int payloadLength;
private byte[] payload;
public SECCDiscoveryRes(byte[] seccIPAddress, byte[] seccPort, byte security, byte transportProtocol) {
setSeccIPAddress(seccIPAddress);
setSeccPort(seccPort);
setSecurity(security);
setTransportProtocol(transportProtocol);
setPayloadLength(20);
}
public SECCDiscoveryRes(byte[] byteArray) {
setSeccIPAddress(Arrays.copyOfRange(byteArray, 0, 16));
setSeccPort(Arrays.copyOfRange(byteArray, 16, 18));
setSecurity((Arrays.copyOfRange(byteArray, 18,19))[0]);
setTransportProtocol((Arrays.copyOfRange(byteArray, 19,20))[0]);
}
public byte[] getSeccIPAddress() {
return seccIPAddress;
}
public void setSeccIPAddress(byte[] seccIPAddress) {
this.seccIPAddress = seccIPAddress;
}
public byte[] getSeccPort() {
return seccPort;
}
public void setSeccPort(byte[] seccPort) {
this.seccPort = seccPort;
}
public byte getSecurity() {
return security;
}
public void setSecurity(byte security) {
this.security = security;
}
public byte getTransportProtocol() {
return transportProtocol;
}
public void setTransportProtocol(byte transportProtocol) {
this.transportProtocol = transportProtocol;
}
public byte[] getPayload() {
// The order of a newly created byte buffer is always big endian in accordance to [V2G2-156]
ByteBuffer payloadBuffer = ByteBuffer.allocate(payloadLength);
payloadBuffer.put(seccIPAddress)
.put(seccPort)
.put(security)
.put(transportProtocol);
payload = new byte[payloadLength];
// Sets the messageBuffers's position in order for the .get() message to work without
// throwing a BufferUnderflowException
((Buffer)payloadBuffer).position(0);
payloadBuffer.get(payload);
return payload;
}
private void setPayloadLength(int payloadLength) {
this.payloadLength = payloadLength;
}
}

View File

@@ -0,0 +1,178 @@
/*******************************************************************************
* The MIT License (MIT)
*
* Copyright (c) 2015 - 2019 Dr. Marc Mültin (V2G Clarity)
*
* Permission is hereby granted, free of charge, to any person obtaining a copy
* of this software and associated documentation files (the "Software"), to deal
* in the Software without restriction, including without limitation the rights
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
* copies of the Software, and to permit persons to whom the Software is
* furnished to do so, subject to the following conditions:
*
* The above copyright notice and this permission notice shall be included in
* all copies or substantial portions of the Software.
*
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
* THE SOFTWARE.
*******************************************************************************/
//
// Diese Datei wurde mit der JavaTM Architecture for XML Binding(JAXB) Reference Implementation, v2.2.8-b130911.1802 generiert
// Siehe <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a>
// Änderungen an dieser Datei gehen bei einer Neukompilierung des Quellschemas verloren.
// Generiert: 2014.10.07 um 04:56:57 PM CEST
//
package com.v2gclarity.risev2g.shared.v2gMessages.appProtocol;
import javax.xml.bind.annotation.XmlAccessType;
import javax.xml.bind.annotation.XmlAccessorType;
import javax.xml.bind.annotation.XmlElement;
import javax.xml.bind.annotation.XmlSchemaType;
import javax.xml.bind.annotation.XmlType;
/**
* <p>Java-Klasse für AppProtocolType complex type.
*
* <p>Das folgende Schemafragment gibt den erwarteten Content an, der in dieser Klasse enthalten ist.
*
* <pre>
* &lt;complexType name="AppProtocolType">
* &lt;complexContent>
* &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
* &lt;sequence>
* &lt;element name="ProtocolNamespace" type="{urn:iso:15118:2:2010:AppProtocol}protocolNamespaceType"/>
* &lt;element name="VersionNumberMajor" type="{http://www.w3.org/2001/XMLSchema}unsignedInt"/>
* &lt;element name="VersionNumberMinor" type="{http://www.w3.org/2001/XMLSchema}unsignedInt"/>
* &lt;element name="SchemaID" type="{urn:iso:15118:2:2010:AppProtocol}idType"/>
* &lt;element name="Priority" type="{urn:iso:15118:2:2010:AppProtocol}priorityType"/>
* &lt;/sequence>
* &lt;/restriction>
* &lt;/complexContent>
* &lt;/complexType>
* </pre>
*
*
*/
@XmlAccessorType(XmlAccessType.FIELD)
@XmlType(name = "AppProtocolType", propOrder = {
"protocolNamespace",
"versionNumberMajor",
"versionNumberMinor",
"schemaID",
"priority"
})
public class AppProtocolType {
@XmlElement(name = "ProtocolNamespace", required = true)
@XmlSchemaType(name = "anyURI")
protected String protocolNamespace;
@XmlElement(name = "VersionNumberMajor")
@XmlSchemaType(name = "unsignedInt")
protected long versionNumberMajor;
@XmlElement(name = "VersionNumberMinor")
@XmlSchemaType(name = "unsignedInt")
protected long versionNumberMinor;
@XmlElement(name = "SchemaID")
@XmlSchemaType(name = "unsignedByte")
protected short schemaID;
@XmlElement(name = "Priority")
@XmlSchemaType(name = "unsignedByte")
protected short priority;
/**
* Ruft den Wert der protocolNamespace-Eigenschaft ab.
*
* @return
* possible object is
* {@link String }
*
*/
public String getProtocolNamespace() {
return protocolNamespace;
}
/**
* Legt den Wert der protocolNamespace-Eigenschaft fest.
*
* @param value
* allowed object is
* {@link String }
*
*/
public void setProtocolNamespace(String value) {
this.protocolNamespace = value;
}
/**
* Ruft den Wert der versionNumberMajor-Eigenschaft ab.
*
*/
public long getVersionNumberMajor() {
return versionNumberMajor;
}
/**
* Legt den Wert der versionNumberMajor-Eigenschaft fest.
*
*/
public void setVersionNumberMajor(long value) {
this.versionNumberMajor = value;
}
/**
* Ruft den Wert der versionNumberMinor-Eigenschaft ab.
*
*/
public long getVersionNumberMinor() {
return versionNumberMinor;
}
/**
* Legt den Wert der versionNumberMinor-Eigenschaft fest.
*
*/
public void setVersionNumberMinor(long value) {
this.versionNumberMinor = value;
}
/**
* Ruft den Wert der schemaID-Eigenschaft ab.
*
*/
public short getSchemaID() {
return schemaID;
}
/**
* Legt den Wert der schemaID-Eigenschaft fest.
*
*/
public void setSchemaID(short value) {
this.schemaID = value;
}
/**
* Ruft den Wert der priority-Eigenschaft ab.
*
*/
public short getPriority() {
return priority;
}
/**
* Legt den Wert der priority-Eigenschaft fest.
*
*/
public void setPriority(short value) {
this.priority = value;
}
}

View File

@@ -0,0 +1,86 @@
/*******************************************************************************
* The MIT License (MIT)
*
* Copyright (c) 2015 - 2019 Dr. Marc Mültin (V2G Clarity)
*
* Permission is hereby granted, free of charge, to any person obtaining a copy
* of this software and associated documentation files (the "Software"), to deal
* in the Software without restriction, including without limitation the rights
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
* copies of the Software, and to permit persons to whom the Software is
* furnished to do so, subject to the following conditions:
*
* The above copyright notice and this permission notice shall be included in
* all copies or substantial portions of the Software.
*
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
* THE SOFTWARE.
*******************************************************************************/
//
// Diese Datei wurde mit der JavaTM Architecture for XML Binding(JAXB) Reference Implementation, v2.2.8-b130911.1802 generiert
// Siehe <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a>
// Änderungen an dieser Datei gehen bei einer Neukompilierung des Quellschemas verloren.
// Generiert: 2014.10.07 um 04:56:57 PM CEST
//
package com.v2gclarity.risev2g.shared.v2gMessages.appProtocol;
import javax.xml.bind.annotation.XmlRegistry;
/**
* This object contains factory methods for each
* Java content interface and Java element interface
* generated in the v2gMessages.appProtocol package.
* <p>An ObjectFactory allows you to programatically
* construct new instances of the Java representation
* for XML content. The Java representation of XML
* content can consist of schema derived interfaces
* and classes representing the binding of schema
* type definitions, element declarations and model
* groups. Factory methods for each of these are
* provided in this class.
*
*/
@XmlRegistry
public class ObjectFactory {
/**
* Create a new ObjectFactory that can be used to create new instances of schema derived classes for package: v2gMessages.appProtocol
*
*/
public ObjectFactory() {
}
/**
* Create an instance of {@link SupportedAppProtocolRes }
*
*/
public SupportedAppProtocolRes createSupportedAppProtocolRes() {
return new SupportedAppProtocolRes();
}
/**
* Create an instance of {@link SupportedAppProtocolReq }
*
*/
public SupportedAppProtocolReq createSupportedAppProtocolReq() {
return new SupportedAppProtocolReq();
}
/**
* Create an instance of {@link AppProtocolType }
*
*/
public AppProtocolType createAppProtocolType() {
return new AppProtocolType();
}
}

View File

@@ -0,0 +1,84 @@
/*******************************************************************************
* The MIT License (MIT)
*
* Copyright (c) 2015 - 2019 Dr. Marc Mültin (V2G Clarity)
*
* Permission is hereby granted, free of charge, to any person obtaining a copy
* of this software and associated documentation files (the "Software"), to deal
* in the Software without restriction, including without limitation the rights
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
* copies of the Software, and to permit persons to whom the Software is
* furnished to do so, subject to the following conditions:
*
* The above copyright notice and this permission notice shall be included in
* all copies or substantial portions of the Software.
*
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
* THE SOFTWARE.
*******************************************************************************/
//
// Diese Datei wurde mit der JavaTM Architecture for XML Binding(JAXB) Reference Implementation, v2.2.8-b130911.1802 generiert
// Siehe <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a>
// Änderungen an dieser Datei gehen bei einer Neukompilierung des Quellschemas verloren.
// Generiert: 2014.10.07 um 04:56:57 PM CEST
//
package com.v2gclarity.risev2g.shared.v2gMessages.appProtocol;
import javax.xml.bind.annotation.XmlEnum;
import javax.xml.bind.annotation.XmlEnumValue;
import javax.xml.bind.annotation.XmlType;
/**
* <p>Java-Klasse für responseCodeType.
*
* <p>Das folgende Schemafragment gibt den erwarteten Content an, der in dieser Klasse enthalten ist.
* <p>
* <pre>
* &lt;simpleType name="responseCodeType">
* &lt;restriction base="{http://www.w3.org/2001/XMLSchema}string">
* &lt;enumeration value="OK_SuccessfulNegotiation"/>
* &lt;enumeration value="OK_SuccessfulNegotiationWithMinorDeviation"/>
* &lt;enumeration value="Failed_NoNegotiation"/>
* &lt;/restriction>
* &lt;/simpleType>
* </pre>
*
*/
@XmlType(name = "responseCodeType")
@XmlEnum
public enum ResponseCodeType {
@XmlEnumValue("OK_SuccessfulNegotiation")
OK_SUCCESSFUL_NEGOTIATION("OK_SuccessfulNegotiation"),
@XmlEnumValue("OK_SuccessfulNegotiationWithMinorDeviation")
OK_SUCCESSFUL_NEGOTIATION_WITH_MINOR_DEVIATION("OK_SuccessfulNegotiationWithMinorDeviation"),
@XmlEnumValue("Failed_NoNegotiation")
FAILED_NO_NEGOTIATION("Failed_NoNegotiation");
private final String value;
ResponseCodeType(String v) {
value = v;
}
public String value() {
return value;
}
public static ResponseCodeType fromValue(String v) {
for (ResponseCodeType c: ResponseCodeType.values()) {
if (c.value.equals(v)) {
return c;
}
}
throw new IllegalArgumentException(v);
}
}

View File

@@ -0,0 +1,101 @@
/*******************************************************************************
* The MIT License (MIT)
*
* Copyright (c) 2015 - 2019 Dr. Marc Mültin (V2G Clarity)
*
* Permission is hereby granted, free of charge, to any person obtaining a copy
* of this software and associated documentation files (the "Software"), to deal
* in the Software without restriction, including without limitation the rights
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
* copies of the Software, and to permit persons to whom the Software is
* furnished to do so, subject to the following conditions:
*
* The above copyright notice and this permission notice shall be included in
* all copies or substantial portions of the Software.
*
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
* THE SOFTWARE.
*******************************************************************************/
//
// Diese Datei wurde mit der JavaTM Architecture for XML Binding(JAXB) Reference Implementation, v2.2.8-b130911.1802 generiert
// Siehe <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a>
// Änderungen an dieser Datei gehen bei einer Neukompilierung des Quellschemas verloren.
// Generiert: 2014.10.07 um 04:56:57 PM CEST
//
package com.v2gclarity.risev2g.shared.v2gMessages.appProtocol;
import java.util.ArrayList;
import java.util.List;
import javax.xml.bind.annotation.XmlAccessType;
import javax.xml.bind.annotation.XmlAccessorType;
import javax.xml.bind.annotation.XmlElement;
import javax.xml.bind.annotation.XmlRootElement;
import javax.xml.bind.annotation.XmlType;
/**
* <p>Java-Klasse für anonymous complex type.
*
* <p>Das folgende Schemafragment gibt den erwarteten Content an, der in dieser Klasse enthalten ist.
*
* <pre>
* &lt;complexType>
* &lt;complexContent>
* &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
* &lt;sequence>
* &lt;element name="AppProtocol" type="{urn:iso:15118:2:2010:AppProtocol}AppProtocolType" maxOccurs="20"/>
* &lt;/sequence>
* &lt;/restriction>
* &lt;/complexContent>
* &lt;/complexType>
* </pre>
*
*
*/
@XmlAccessorType(XmlAccessType.FIELD)
@XmlType(name = "", propOrder = {
"appProtocol"
})
@XmlRootElement(name = "supportedAppProtocolReq")
public class SupportedAppProtocolReq {
@XmlElement(name = "AppProtocol", required = true)
protected List<AppProtocolType> appProtocol;
/**
* Gets the value of the appProtocol property.
*
* <p>
* This accessor method returns a reference to the live list,
* not a snapshot. Therefore any modification you make to the
* returned list will be present inside the JAXB object.
* This is why there is not a <CODE>set</CODE> method for the appProtocol property.
*
* <p>
* For example, to add a new item, do as follows:
* <pre>
* getAppProtocol().add(newItem);
* </pre>
*
*
* <p>
* Objects of the following type(s) are allowed in the list
* {@link AppProtocolType }
*
*
*/
public List<AppProtocolType> getAppProtocol() {
if (appProtocol == null) {
appProtocol = new ArrayList<AppProtocolType>();
}
return this.appProtocol;
}
}

View File

@@ -0,0 +1,125 @@
/*******************************************************************************
* The MIT License (MIT)
*
* Copyright (c) 2015 - 2019 Dr. Marc Mültin (V2G Clarity)
*
* Permission is hereby granted, free of charge, to any person obtaining a copy
* of this software and associated documentation files (the "Software"), to deal
* in the Software without restriction, including without limitation the rights
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
* copies of the Software, and to permit persons to whom the Software is
* furnished to do so, subject to the following conditions:
*
* The above copyright notice and this permission notice shall be included in
* all copies or substantial portions of the Software.
*
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
* THE SOFTWARE.
*******************************************************************************/
//
// Diese Datei wurde mit der JavaTM Architecture for XML Binding(JAXB) Reference Implementation, v2.2.8-b130911.1802 generiert
// Siehe <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a>
// Änderungen an dieser Datei gehen bei einer Neukompilierung des Quellschemas verloren.
// Generiert: 2014.10.07 um 04:56:57 PM CEST
//
package com.v2gclarity.risev2g.shared.v2gMessages.appProtocol;
import javax.xml.bind.annotation.XmlAccessType;
import javax.xml.bind.annotation.XmlAccessorType;
import javax.xml.bind.annotation.XmlElement;
import javax.xml.bind.annotation.XmlRootElement;
import javax.xml.bind.annotation.XmlSchemaType;
import javax.xml.bind.annotation.XmlType;
/**
* <p>Java-Klasse für anonymous complex type.
*
* <p>Das folgende Schemafragment gibt den erwarteten Content an, der in dieser Klasse enthalten ist.
*
* <pre>
* &lt;complexType>
* &lt;complexContent>
* &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
* &lt;sequence>
* &lt;element name="ResponseCode" type="{urn:iso:15118:2:2010:AppProtocol}responseCodeType"/>
* &lt;element name="SchemaID" type="{urn:iso:15118:2:2010:AppProtocol}idType" minOccurs="0"/>
* &lt;/sequence>
* &lt;/restriction>
* &lt;/complexContent>
* &lt;/complexType>
* </pre>
*
*
*/
@XmlAccessorType(XmlAccessType.FIELD)
@XmlType(name = "", propOrder = {
"responseCode",
"schemaID"
})
@XmlRootElement(name = "supportedAppProtocolRes")
public class SupportedAppProtocolRes {
@XmlElement(name = "ResponseCode", required = true)
@XmlSchemaType(name = "string")
protected ResponseCodeType responseCode;
@XmlElement(name = "SchemaID")
@XmlSchemaType(name = "unsignedByte")
protected Short schemaID;
/**
* Ruft den Wert der responseCode-Eigenschaft ab.
*
* @return
* possible object is
* {@link ResponseCodeType }
*
*/
public ResponseCodeType getResponseCode() {
return responseCode;
}
/**
* Legt den Wert der responseCode-Eigenschaft fest.
*
* @param value
* allowed object is
* {@link ResponseCodeType }
*
*/
public void setResponseCode(ResponseCodeType value) {
this.responseCode = value;
}
/**
* Ruft den Wert der schemaID-Eigenschaft ab.
*
* @return
* possible object is
* {@link Short }
*
*/
public Short getSchemaID() {
return schemaID;
}
/**
* Legt den Wert der schemaID-Eigenschaft fest.
*
* @param value
* allowed object is
* {@link Short }
*
*/
public void setSchemaID(Short value) {
this.schemaID = value;
}
}

View File

@@ -0,0 +1,32 @@
/*******************************************************************************
* The MIT License (MIT)
*
* Copyright (c) 2015 - 2019 Dr. Marc Mültin (V2G Clarity)
*
* Permission is hereby granted, free of charge, to any person obtaining a copy
* of this software and associated documentation files (the "Software"), to deal
* in the Software without restriction, including without limitation the rights
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
* copies of the Software, and to permit persons to whom the Software is
* furnished to do so, subject to the following conditions:
*
* The above copyright notice and this permission notice shall be included in
* all copies or substantial portions of the Software.
*
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
* THE SOFTWARE.
*******************************************************************************/
//
// Diese Datei wurde mit der JavaTM Architecture for XML Binding(JAXB) Reference Implementation, v2.2.8-b130911.1802 generiert
// Siehe <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a>
// Änderungen an dieser Datei gehen bei einer Neukompilierung des Quellschemas verloren.
// Generiert: 2014.10.07 um 04:56:57 PM CEST
//
@javax.xml.bind.annotation.XmlSchema(namespace = "urn:iso:15118:2:2010:AppProtocol")
package com.v2gclarity.risev2g.shared.v2gMessages.appProtocol;

View File

@@ -0,0 +1,178 @@
/*******************************************************************************
* The MIT License (MIT)
*
* Copyright (c) 2015 - 2019 Dr. Marc Mültin (V2G Clarity)
*
* Permission is hereby granted, free of charge, to any person obtaining a copy
* of this software and associated documentation files (the "Software"), to deal
* in the Software without restriction, including without limitation the rights
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
* copies of the Software, and to permit persons to whom the Software is
* furnished to do so, subject to the following conditions:
*
* The above copyright notice and this permission notice shall be included in
* all copies or substantial portions of the Software.
*
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
* THE SOFTWARE.
*******************************************************************************/
//
// Diese Datei wurde mit der JavaTM Architecture for XML Binding(JAXB) Reference Implementation, v2.2.8-b130911.1802 generiert
// Siehe <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a>
// Änderungen an dieser Datei gehen bei einer Neukompilierung des Quellschemas verloren.
// Generiert: 2014.10.07 um 04:55:05 PM CEST
//
package com.v2gclarity.risev2g.shared.v2gMessages.msgDef;
import javax.xml.bind.annotation.XmlAccessType;
import javax.xml.bind.annotation.XmlAccessorType;
import javax.xml.bind.annotation.XmlElement;
import javax.xml.bind.annotation.XmlType;
/**
* <p>Java-Klasse für AC_EVChargeParameterType complex type.
*
* <p>Das folgende Schemafragment gibt den erwarteten Content an, der in dieser Klasse enthalten ist.
*
* <pre>
* &lt;complexType name="AC_EVChargeParameterType">
* &lt;complexContent>
* &lt;extension base="{urn:iso:15118:2:2013:MsgDataTypes}EVChargeParameterType">
* &lt;sequence>
* &lt;element name="EAmount" type="{urn:iso:15118:2:2013:MsgDataTypes}PhysicalValueType"/>
* &lt;element name="EVMaxVoltage" type="{urn:iso:15118:2:2013:MsgDataTypes}PhysicalValueType"/>
* &lt;element name="EVMaxCurrent" type="{urn:iso:15118:2:2013:MsgDataTypes}PhysicalValueType"/>
* &lt;element name="EVMinCurrent" type="{urn:iso:15118:2:2013:MsgDataTypes}PhysicalValueType"/>
* &lt;/sequence>
* &lt;/extension>
* &lt;/complexContent>
* &lt;/complexType>
* </pre>
*
*
*/
@XmlAccessorType(XmlAccessType.FIELD)
@XmlType(name = "AC_EVChargeParameterType", propOrder = {
"eAmount",
"evMaxVoltage",
"evMaxCurrent",
"evMinCurrent"
})
public class ACEVChargeParameterType
extends EVChargeParameterType
{
@XmlElement(name = "EAmount", required = true)
protected PhysicalValueType eAmount;
@XmlElement(name = "EVMaxVoltage", required = true)
protected PhysicalValueType evMaxVoltage;
@XmlElement(name = "EVMaxCurrent", required = true)
protected PhysicalValueType evMaxCurrent;
@XmlElement(name = "EVMinCurrent", required = true)
protected PhysicalValueType evMinCurrent;
/**
* Ruft den Wert der eAmount-Eigenschaft ab.
*
* @return
* possible object is
* {@link PhysicalValueType }
*
*/
public PhysicalValueType getEAmount() {
return eAmount;
}
/**
* Legt den Wert der eAmount-Eigenschaft fest.
*
* @param value
* allowed object is
* {@link PhysicalValueType }
*
*/
public void setEAmount(PhysicalValueType value) {
this.eAmount = value;
}
/**
* Ruft den Wert der evMaxVoltage-Eigenschaft ab.
*
* @return
* possible object is
* {@link PhysicalValueType }
*
*/
public PhysicalValueType getEVMaxVoltage() {
return evMaxVoltage;
}
/**
* Legt den Wert der evMaxVoltage-Eigenschaft fest.
*
* @param value
* allowed object is
* {@link PhysicalValueType }
*
*/
public void setEVMaxVoltage(PhysicalValueType value) {
this.evMaxVoltage = value;
}
/**
* Ruft den Wert der evMaxCurrent-Eigenschaft ab.
*
* @return
* possible object is
* {@link PhysicalValueType }
*
*/
public PhysicalValueType getEVMaxCurrent() {
return evMaxCurrent;
}
/**
* Legt den Wert der evMaxCurrent-Eigenschaft fest.
*
* @param value
* allowed object is
* {@link PhysicalValueType }
*
*/
public void setEVMaxCurrent(PhysicalValueType value) {
this.evMaxCurrent = value;
}
/**
* Ruft den Wert der evMinCurrent-Eigenschaft ab.
*
* @return
* possible object is
* {@link PhysicalValueType }
*
*/
public PhysicalValueType getEVMinCurrent() {
return evMinCurrent;
}
/**
* Legt den Wert der evMinCurrent-Eigenschaft fest.
*
* @param value
* allowed object is
* {@link PhysicalValueType }
*
*/
public void setEVMinCurrent(PhysicalValueType value) {
this.evMinCurrent = value;
}
}

View File

@@ -0,0 +1,150 @@
/*******************************************************************************
* The MIT License (MIT)
*
* Copyright (c) 2015 - 2019 Dr. Marc Mültin (V2G Clarity)
*
* Permission is hereby granted, free of charge, to any person obtaining a copy
* of this software and associated documentation files (the "Software"), to deal
* in the Software without restriction, including without limitation the rights
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
* copies of the Software, and to permit persons to whom the Software is
* furnished to do so, subject to the following conditions:
*
* The above copyright notice and this permission notice shall be included in
* all copies or substantial portions of the Software.
*
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
* THE SOFTWARE.
*******************************************************************************/
//
// Diese Datei wurde mit der JavaTM Architecture for XML Binding(JAXB) Reference Implementation, v2.2.8-b130911.1802 generiert
// Siehe <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a>
// Änderungen an dieser Datei gehen bei einer Neukompilierung des Quellschemas verloren.
// Generiert: 2014.10.07 um 04:55:05 PM CEST
//
package com.v2gclarity.risev2g.shared.v2gMessages.msgDef;
import javax.xml.bind.annotation.XmlAccessType;
import javax.xml.bind.annotation.XmlAccessorType;
import javax.xml.bind.annotation.XmlElement;
import javax.xml.bind.annotation.XmlType;
/**
* <p>Java-Klasse für AC_EVSEChargeParameterType complex type.
*
* <p>Das folgende Schemafragment gibt den erwarteten Content an, der in dieser Klasse enthalten ist.
*
* <pre>
* &lt;complexType name="AC_EVSEChargeParameterType">
* &lt;complexContent>
* &lt;extension base="{urn:iso:15118:2:2013:MsgDataTypes}EVSEChargeParameterType">
* &lt;sequence>
* &lt;element name="AC_EVSEStatus" type="{urn:iso:15118:2:2013:MsgDataTypes}AC_EVSEStatusType"/>
* &lt;element name="EVSENominalVoltage" type="{urn:iso:15118:2:2013:MsgDataTypes}PhysicalValueType"/>
* &lt;element name="EVSEMaxCurrent" type="{urn:iso:15118:2:2013:MsgDataTypes}PhysicalValueType"/>
* &lt;/sequence>
* &lt;/extension>
* &lt;/complexContent>
* &lt;/complexType>
* </pre>
*
*
*/
@XmlAccessorType(XmlAccessType.FIELD)
@XmlType(name = "AC_EVSEChargeParameterType", propOrder = {
"acevseStatus",
"evseNominalVoltage",
"evseMaxCurrent"
})
public class ACEVSEChargeParameterType
extends EVSEChargeParameterType
{
@XmlElement(name = "AC_EVSEStatus", required = true)
protected ACEVSEStatusType acevseStatus;
@XmlElement(name = "EVSENominalVoltage", required = true)
protected PhysicalValueType evseNominalVoltage;
@XmlElement(name = "EVSEMaxCurrent", required = true)
protected PhysicalValueType evseMaxCurrent;
/**
* Ruft den Wert der acevseStatus-Eigenschaft ab.
*
* @return
* possible object is
* {@link ACEVSEStatusType }
*
*/
public ACEVSEStatusType getACEVSEStatus() {
return acevseStatus;
}
/**
* Legt den Wert der acevseStatus-Eigenschaft fest.
*
* @param value
* allowed object is
* {@link ACEVSEStatusType }
*
*/
public void setACEVSEStatus(ACEVSEStatusType value) {
this.acevseStatus = value;
}
/**
* Ruft den Wert der evseNominalVoltage-Eigenschaft ab.
*
* @return
* possible object is
* {@link PhysicalValueType }
*
*/
public PhysicalValueType getEVSENominalVoltage() {
return evseNominalVoltage;
}
/**
* Legt den Wert der evseNominalVoltage-Eigenschaft fest.
*
* @param value
* allowed object is
* {@link PhysicalValueType }
*
*/
public void setEVSENominalVoltage(PhysicalValueType value) {
this.evseNominalVoltage = value;
}
/**
* Ruft den Wert der evseMaxCurrent-Eigenschaft ab.
*
* @return
* possible object is
* {@link PhysicalValueType }
*
*/
public PhysicalValueType getEVSEMaxCurrent() {
return evseMaxCurrent;
}
/**
* Legt den Wert der evseMaxCurrent-Eigenschaft fest.
*
* @param value
* allowed object is
* {@link PhysicalValueType }
*
*/
public void setEVSEMaxCurrent(PhysicalValueType value) {
this.evseMaxCurrent = value;
}
}

View File

@@ -0,0 +1,86 @@
/*******************************************************************************
* The MIT License (MIT)
*
* Copyright (c) 2015 - 2019 Dr. Marc Mültin (V2G Clarity)
*
* Permission is hereby granted, free of charge, to any person obtaining a copy
* of this software and associated documentation files (the "Software"), to deal
* in the Software without restriction, including without limitation the rights
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
* copies of the Software, and to permit persons to whom the Software is
* furnished to do so, subject to the following conditions:
*
* The above copyright notice and this permission notice shall be included in
* all copies or substantial portions of the Software.
*
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
* THE SOFTWARE.
*******************************************************************************/
//
// Diese Datei wurde mit der JavaTM Architecture for XML Binding(JAXB) Reference Implementation, v2.2.8-b130911.1802 generiert
// Siehe <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a>
// Änderungen an dieser Datei gehen bei einer Neukompilierung des Quellschemas verloren.
// Generiert: 2014.10.07 um 04:55:05 PM CEST
//
package com.v2gclarity.risev2g.shared.v2gMessages.msgDef;
import javax.xml.bind.annotation.XmlAccessType;
import javax.xml.bind.annotation.XmlAccessorType;
import javax.xml.bind.annotation.XmlElement;
import javax.xml.bind.annotation.XmlType;
/**
* <p>Java-Klasse für AC_EVSEStatusType complex type.
*
* <p>Das folgende Schemafragment gibt den erwarteten Content an, der in dieser Klasse enthalten ist.
*
* <pre>
* &lt;complexType name="AC_EVSEStatusType">
* &lt;complexContent>
* &lt;extension base="{urn:iso:15118:2:2013:MsgDataTypes}EVSEStatusType">
* &lt;sequence>
* &lt;element name="RCD" type="{http://www.w3.org/2001/XMLSchema}boolean"/>
* &lt;/sequence>
* &lt;/extension>
* &lt;/complexContent>
* &lt;/complexType>
* </pre>
*
*
*/
@XmlAccessorType(XmlAccessType.FIELD)
@XmlType(name = "AC_EVSEStatusType", propOrder = {
"rcd"
})
public class ACEVSEStatusType
extends EVSEStatusType
{
@XmlElement(name = "RCD")
protected boolean rcd;
/**
* Ruft den Wert der rcd-Eigenschaft ab.
*
*/
public boolean isRCD() {
return rcd;
}
/**
* Legt den Wert der rcd-Eigenschaft fest.
*
*/
public void setRCD(boolean value) {
this.rcd = value;
}
}

View File

@@ -0,0 +1,127 @@
/*******************************************************************************
* The MIT License (MIT)
*
* Copyright (c) 2015 - 2019 Dr. Marc Mültin (V2G Clarity)
*
* Permission is hereby granted, free of charge, to any person obtaining a copy
* of this software and associated documentation files (the "Software"), to deal
* in the Software without restriction, including without limitation the rights
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
* copies of the Software, and to permit persons to whom the Software is
* furnished to do so, subject to the following conditions:
*
* The above copyright notice and this permission notice shall be included in
* all copies or substantial portions of the Software.
*
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
* THE SOFTWARE.
*******************************************************************************/
//
// Diese Datei wurde mit der JavaTM Architecture for XML Binding(JAXB) Reference Implementation, v2.2.8-b130911.1802 generiert
// Siehe <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a>
// Änderungen an dieser Datei gehen bei einer Neukompilierung des Quellschemas verloren.
// Generiert: 2014.10.07 um 04:55:05 PM CEST
//
package com.v2gclarity.risev2g.shared.v2gMessages.msgDef;
import javax.xml.bind.annotation.XmlAccessType;
import javax.xml.bind.annotation.XmlAccessorType;
import javax.xml.bind.annotation.XmlAttribute;
import javax.xml.bind.annotation.XmlElement;
import javax.xml.bind.annotation.XmlID;
import javax.xml.bind.annotation.XmlSchemaType;
import javax.xml.bind.annotation.XmlType;
import javax.xml.bind.annotation.adapters.CollapsedStringAdapter;
import javax.xml.bind.annotation.adapters.XmlJavaTypeAdapter;
/**
* <p>Java-Klasse für AuthorizationReqType complex type.
*
* <p>Das folgende Schemafragment gibt den erwarteten Content an, der in dieser Klasse enthalten ist.
*
* <pre>
* &lt;complexType name="AuthorizationReqType">
* &lt;complexContent>
* &lt;extension base="{urn:iso:15118:2:2013:MsgBody}BodyBaseType">
* &lt;sequence>
* &lt;element name="GenChallenge" type="{urn:iso:15118:2:2013:MsgDataTypes}genChallengeType" minOccurs="0"/>
* &lt;/sequence>
* &lt;attribute name="Id" type="{http://www.w3.org/2001/XMLSchema}ID" />
* &lt;/extension>
* &lt;/complexContent>
* &lt;/complexType>
* </pre>
*
*
*/
@XmlAccessorType(XmlAccessType.FIELD)
@XmlType(name = "AuthorizationReqType", namespace = "urn:iso:15118:2:2013:MsgBody", propOrder = {
"genChallenge"
})
public class AuthorizationReqType
extends BodyBaseType
{
@XmlElement(name = "GenChallenge")
protected byte[] genChallenge;
@XmlAttribute(name = "Id", namespace = "urn:iso:15118:2:2013:MsgBody")
@XmlJavaTypeAdapter(CollapsedStringAdapter.class)
@XmlID
@XmlSchemaType(name = "ID")
protected String id;
/**
* Ruft den Wert der genChallenge-Eigenschaft ab.
*
* @return
* possible object is
* byte[]
*/
public byte[] getGenChallenge() {
return genChallenge;
}
/**
* Legt den Wert der genChallenge-Eigenschaft fest.
*
* @param value
* allowed object is
* byte[]
*/
public void setGenChallenge(byte[] value) {
this.genChallenge = value;
}
/**
* Ruft den Wert der id-Eigenschaft ab.
*
* @return
* possible object is
* {@link String }
*
*/
public String getId() {
return id;
}
/**
* Legt den Wert der id-Eigenschaft fest.
*
* @param value
* allowed object is
* {@link String }
*
*/
public void setId(String value) {
this.id = value;
}
}

View File

@@ -0,0 +1,125 @@
/*******************************************************************************
* The MIT License (MIT)
*
* Copyright (c) 2015 - 2019 Dr. Marc Mültin (V2G Clarity)
*
* Permission is hereby granted, free of charge, to any person obtaining a copy
* of this software and associated documentation files (the "Software"), to deal
* in the Software without restriction, including without limitation the rights
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
* copies of the Software, and to permit persons to whom the Software is
* furnished to do so, subject to the following conditions:
*
* The above copyright notice and this permission notice shall be included in
* all copies or substantial portions of the Software.
*
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
* THE SOFTWARE.
*******************************************************************************/
//
// Diese Datei wurde mit der JavaTM Architecture for XML Binding(JAXB) Reference Implementation, v2.2.8-b130911.1802 generiert
// Siehe <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a>
// Änderungen an dieser Datei gehen bei einer Neukompilierung des Quellschemas verloren.
// Generiert: 2014.10.07 um 04:55:05 PM CEST
//
package com.v2gclarity.risev2g.shared.v2gMessages.msgDef;
import javax.xml.bind.annotation.XmlAccessType;
import javax.xml.bind.annotation.XmlAccessorType;
import javax.xml.bind.annotation.XmlElement;
import javax.xml.bind.annotation.XmlSchemaType;
import javax.xml.bind.annotation.XmlType;
/**
* <p>Java-Klasse für AuthorizationResType complex type.
*
* <p>Das folgende Schemafragment gibt den erwarteten Content an, der in dieser Klasse enthalten ist.
*
* <pre>
* &lt;complexType name="AuthorizationResType">
* &lt;complexContent>
* &lt;extension base="{urn:iso:15118:2:2013:MsgBody}BodyBaseType">
* &lt;sequence>
* &lt;element name="ResponseCode" type="{urn:iso:15118:2:2013:MsgDataTypes}responseCodeType"/>
* &lt;element name="EVSEProcessing" type="{urn:iso:15118:2:2013:MsgDataTypes}EVSEProcessingType"/>
* &lt;/sequence>
* &lt;/extension>
* &lt;/complexContent>
* &lt;/complexType>
* </pre>
*
*
*/
@XmlAccessorType(XmlAccessType.FIELD)
@XmlType(name = "AuthorizationResType", namespace = "urn:iso:15118:2:2013:MsgBody", propOrder = {
"responseCode",
"evseProcessing"
})
public class AuthorizationResType
extends BodyBaseType
{
@XmlElement(name = "ResponseCode", required = true)
@XmlSchemaType(name = "string")
protected ResponseCodeType responseCode;
@XmlElement(name = "EVSEProcessing", required = true)
@XmlSchemaType(name = "string")
protected EVSEProcessingType evseProcessing;
/**
* Ruft den Wert der responseCode-Eigenschaft ab.
*
* @return
* possible object is
* {@link ResponseCodeType }
*
*/
public ResponseCodeType getResponseCode() {
return responseCode;
}
/**
* Legt den Wert der responseCode-Eigenschaft fest.
*
* @param value
* allowed object is
* {@link ResponseCodeType }
*
*/
public void setResponseCode(ResponseCodeType value) {
this.responseCode = value;
}
/**
* Ruft den Wert der evseProcessing-Eigenschaft ab.
*
* @return
* possible object is
* {@link EVSEProcessingType }
*
*/
public EVSEProcessingType getEVSEProcessing() {
return evseProcessing;
}
/**
* Legt den Wert der evseProcessing-Eigenschaft fest.
*
* @param value
* allowed object is
* {@link EVSEProcessingType }
*
*/
public void setEVSEProcessing(EVSEProcessingType value) {
this.evseProcessing = value;
}
}

View File

@@ -0,0 +1,97 @@
/*******************************************************************************
* The MIT License (MIT)
*
* Copyright (c) 2015 - 2019 Dr. Marc Mültin (V2G Clarity)
*
* Permission is hereby granted, free of charge, to any person obtaining a copy
* of this software and associated documentation files (the "Software"), to deal
* in the Software without restriction, including without limitation the rights
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
* copies of the Software, and to permit persons to whom the Software is
* furnished to do so, subject to the following conditions:
*
* The above copyright notice and this permission notice shall be included in
* all copies or substantial portions of the Software.
*
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
* THE SOFTWARE.
*******************************************************************************/
//
// Diese Datei wurde mit der JavaTM Architecture for XML Binding(JAXB) Reference Implementation, v2.2.8-b130911.1802 generiert
// Siehe <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a>
// Änderungen an dieser Datei gehen bei einer Neukompilierung des Quellschemas verloren.
// Generiert: 2014.10.07 um 04:55:05 PM CEST
//
package com.v2gclarity.risev2g.shared.v2gMessages.msgDef;
import javax.xml.bind.annotation.XmlAccessType;
import javax.xml.bind.annotation.XmlAccessorType;
import javax.xml.bind.annotation.XmlSeeAlso;
import javax.xml.bind.annotation.XmlType;
/**
* <p>Java-Klasse für BodyBaseType complex type.
*
* <p>Das folgende Schemafragment gibt den erwarteten Content an, der in dieser Klasse enthalten ist.
*
* <pre>
* &lt;complexType name="BodyBaseType">
* &lt;complexContent>
* &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
* &lt;/restriction>
* &lt;/complexContent>
* &lt;/complexType>
* </pre>
*
*
*/
@XmlAccessorType(XmlAccessType.FIELD)
@XmlType(name = "BodyBaseType", namespace = "urn:iso:15118:2:2013:MsgBody")
@XmlSeeAlso({
AuthorizationResType.class,
PaymentDetailsReqType.class,
AuthorizationReqType.class,
WeldingDetectionReqType.class,
PaymentDetailsResType.class,
WeldingDetectionResType.class,
ChargeParameterDiscoveryResType.class,
CertificateUpdateReqType.class,
ChargeParameterDiscoveryReqType.class,
PreChargeReqType.class,
ServiceDetailResType.class,
MeteringReceiptReqType.class,
ServiceDetailReqType.class,
CertificateInstallationResType.class,
PreChargeResType.class,
CertificateInstallationReqType.class,
CableCheckResType.class,
CableCheckReqType.class,
MeteringReceiptResType.class,
ChargingStatusReqType.class,
ServiceDiscoveryResType.class,
PowerDeliveryReqType.class,
ChargingStatusResType.class,
ServiceDiscoveryReqType.class,
PowerDeliveryResType.class,
SessionStopResType.class,
SessionSetupResType.class,
PaymentServiceSelectionResType.class,
CertificateUpdateResType.class,
PaymentServiceSelectionReqType.class,
CurrentDemandReqType.class,
CurrentDemandResType.class,
SessionStopReqType.class,
SessionSetupReqType.class
})
public abstract class BodyBaseType {
}

View File

@@ -0,0 +1,161 @@
/*******************************************************************************
* The MIT License (MIT)
*
* Copyright (c) 2015 - 2019 Dr. Marc Mültin (V2G Clarity)
*
* Permission is hereby granted, free of charge, to any person obtaining a copy
* of this software and associated documentation files (the "Software"), to deal
* in the Software without restriction, including without limitation the rights
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
* copies of the Software, and to permit persons to whom the Software is
* furnished to do so, subject to the following conditions:
*
* The above copyright notice and this permission notice shall be included in
* all copies or substantial portions of the Software.
*
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
* THE SOFTWARE.
*******************************************************************************/
//
// Diese Datei wurde mit der JavaTM Architecture for XML Binding(JAXB) Reference Implementation, v2.2.8-b130911.1802 generiert
// Siehe <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a>
// Änderungen an dieser Datei gehen bei einer Neukompilierung des Quellschemas verloren.
// Generiert: 2014.10.07 um 04:55:05 PM CEST
//
package com.v2gclarity.risev2g.shared.v2gMessages.msgDef;
import javax.xml.bind.JAXBElement;
import javax.xml.bind.annotation.XmlAccessType;
import javax.xml.bind.annotation.XmlAccessorType;
import javax.xml.bind.annotation.XmlElementRef;
import javax.xml.bind.annotation.XmlType;
/**
* <p>Java-Klasse für BodyType complex type.
*
* <p>Das folgende Schemafragment gibt den erwarteten Content an, der in dieser Klasse enthalten ist.
*
* <pre>
* &lt;complexType name="BodyType">
* &lt;complexContent>
* &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
* &lt;sequence>
* &lt;element ref="{urn:iso:15118:2:2013:MsgBody}BodyElement" minOccurs="0"/>
* &lt;/sequence>
* &lt;/restriction>
* &lt;/complexContent>
* &lt;/complexType>
* </pre>
*
*
*/
@XmlAccessorType(XmlAccessType.FIELD)
@XmlType(name = "BodyType", namespace = "urn:iso:15118:2:2013:MsgBody", propOrder = {
"bodyElement"
})
public class BodyType {
@XmlElementRef(name = "BodyElement", namespace = "urn:iso:15118:2:2013:MsgBody", type = JAXBElement.class, required = false)
protected JAXBElement<? extends BodyBaseType> bodyElement;
/**
* Ruft den Wert der bodyElement-Eigenschaft ab.
*
* @return
* possible object is
* {@link JAXBElement }{@code <}{@link ServiceDiscoveryReqType }{@code >}
* {@link JAXBElement }{@code <}{@link WeldingDetectionReqType }{@code >}
* {@link JAXBElement }{@code <}{@link SessionStopReqType }{@code >}
* {@link JAXBElement }{@code <}{@link MeteringReceiptReqType }{@code >}
* {@link JAXBElement }{@code <}{@link SessionStopResType }{@code >}
* {@link JAXBElement }{@code <}{@link CertificateInstallationResType }{@code >}
* {@link JAXBElement }{@code <}{@link PaymentServiceSelectionReqType }{@code >}
* {@link JAXBElement }{@code <}{@link ServiceDiscoveryResType }{@code >}
* {@link JAXBElement }{@code <}{@link PowerDeliveryReqType }{@code >}
* {@link JAXBElement }{@code <}{@link ServiceDetailReqType }{@code >}
* {@link JAXBElement }{@code <}{@link CertificateInstallationReqType }{@code >}
* {@link JAXBElement }{@code <}{@link ChargingStatusResType }{@code >}
* {@link JAXBElement }{@code <}{@link PreChargeResType }{@code >}
* {@link JAXBElement }{@code <}{@link ChargeParameterDiscoveryReqType }{@code >}
* {@link JAXBElement }{@code <}{@link PaymentDetailsResType }{@code >}
* {@link JAXBElement }{@code <}{@link ChargingStatusReqType }{@code >}
* {@link JAXBElement }{@code <}{@link PaymentServiceSelectionResType }{@code >}
* {@link JAXBElement }{@code <}{@link PaymentDetailsReqType }{@code >}
* {@link JAXBElement }{@code <}{@link ServiceDetailResType }{@code >}
* {@link JAXBElement }{@code <}{@link CableCheckResType }{@code >}
* {@link JAXBElement }{@code <}{@link ChargeParameterDiscoveryResType }{@code >}
* {@link JAXBElement }{@code <}{@link CurrentDemandReqType }{@code >}
* {@link JAXBElement }{@code <}{@link BodyBaseType }{@code >}
* {@link JAXBElement }{@code <}{@link CertificateUpdateReqType }{@code >}
* {@link JAXBElement }{@code <}{@link MeteringReceiptResType }{@code >}
* {@link JAXBElement }{@code <}{@link WeldingDetectionResType }{@code >}
* {@link JAXBElement }{@code <}{@link CableCheckReqType }{@code >}
* {@link JAXBElement }{@code <}{@link AuthorizationResType }{@code >}
* {@link JAXBElement }{@code <}{@link PowerDeliveryResType }{@code >}
* {@link JAXBElement }{@code <}{@link SessionSetupReqType }{@code >}
* {@link JAXBElement }{@code <}{@link AuthorizationReqType }{@code >}
* {@link JAXBElement }{@code <}{@link PreChargeReqType }{@code >}
* {@link JAXBElement }{@code <}{@link CertificateUpdateResType }{@code >}
* {@link JAXBElement }{@code <}{@link SessionSetupResType }{@code >}
* {@link JAXBElement }{@code <}{@link CurrentDemandResType }{@code >}
*
*/
public JAXBElement<? extends BodyBaseType> getBodyElement() {
return bodyElement;
}
/**
* Legt den Wert der bodyElement-Eigenschaft fest.
*
* @param value
* allowed object is
* {@link JAXBElement }{@code <}{@link ServiceDiscoveryReqType }{@code >}
* {@link JAXBElement }{@code <}{@link WeldingDetectionReqType }{@code >}
* {@link JAXBElement }{@code <}{@link SessionStopReqType }{@code >}
* {@link JAXBElement }{@code <}{@link MeteringReceiptReqType }{@code >}
* {@link JAXBElement }{@code <}{@link SessionStopResType }{@code >}
* {@link JAXBElement }{@code <}{@link CertificateInstallationResType }{@code >}
* {@link JAXBElement }{@code <}{@link PaymentServiceSelectionReqType }{@code >}
* {@link JAXBElement }{@code <}{@link ServiceDiscoveryResType }{@code >}
* {@link JAXBElement }{@code <}{@link PowerDeliveryReqType }{@code >}
* {@link JAXBElement }{@code <}{@link ServiceDetailReqType }{@code >}
* {@link JAXBElement }{@code <}{@link CertificateInstallationReqType }{@code >}
* {@link JAXBElement }{@code <}{@link ChargingStatusResType }{@code >}
* {@link JAXBElement }{@code <}{@link PreChargeResType }{@code >}
* {@link JAXBElement }{@code <}{@link ChargeParameterDiscoveryReqType }{@code >}
* {@link JAXBElement }{@code <}{@link PaymentDetailsResType }{@code >}
* {@link JAXBElement }{@code <}{@link ChargingStatusReqType }{@code >}
* {@link JAXBElement }{@code <}{@link PaymentServiceSelectionResType }{@code >}
* {@link JAXBElement }{@code <}{@link PaymentDetailsReqType }{@code >}
* {@link JAXBElement }{@code <}{@link ServiceDetailResType }{@code >}
* {@link JAXBElement }{@code <}{@link CableCheckResType }{@code >}
* {@link JAXBElement }{@code <}{@link ChargeParameterDiscoveryResType }{@code >}
* {@link JAXBElement }{@code <}{@link CurrentDemandReqType }{@code >}
* {@link JAXBElement }{@code <}{@link BodyBaseType }{@code >}
* {@link JAXBElement }{@code <}{@link CertificateUpdateReqType }{@code >}
* {@link JAXBElement }{@code <}{@link MeteringReceiptResType }{@code >}
* {@link JAXBElement }{@code <}{@link WeldingDetectionResType }{@code >}
* {@link JAXBElement }{@code <}{@link CableCheckReqType }{@code >}
* {@link JAXBElement }{@code <}{@link AuthorizationResType }{@code >}
* {@link JAXBElement }{@code <}{@link PowerDeliveryResType }{@code >}
* {@link JAXBElement }{@code <}{@link SessionSetupReqType }{@code >}
* {@link JAXBElement }{@code <}{@link AuthorizationReqType }{@code >}
* {@link JAXBElement }{@code <}{@link PreChargeReqType }{@code >}
* {@link JAXBElement }{@code <}{@link CertificateUpdateResType }{@code >}
* {@link JAXBElement }{@code <}{@link SessionSetupResType }{@code >}
* {@link JAXBElement }{@code <}{@link CurrentDemandResType }{@code >}
*
*/
public void setBodyElement(JAXBElement<? extends BodyBaseType> value) {
this.bodyElement = value;
}
}

View File

@@ -0,0 +1,94 @@
/*******************************************************************************
* The MIT License (MIT)
*
* Copyright (c) 2015 - 2019 Dr. Marc Mültin (V2G Clarity)
*
* Permission is hereby granted, free of charge, to any person obtaining a copy
* of this software and associated documentation files (the "Software"), to deal
* in the Software without restriction, including without limitation the rights
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
* copies of the Software, and to permit persons to whom the Software is
* furnished to do so, subject to the following conditions:
*
* The above copyright notice and this permission notice shall be included in
* all copies or substantial portions of the Software.
*
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
* THE SOFTWARE.
*******************************************************************************/
//
// Diese Datei wurde mit der JavaTM Architecture for XML Binding(JAXB) Reference Implementation, v2.2.8-b130911.1802 generiert
// Siehe <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a>
// Änderungen an dieser Datei gehen bei einer Neukompilierung des Quellschemas verloren.
// Generiert: 2014.10.07 um 04:55:05 PM CEST
//
package com.v2gclarity.risev2g.shared.v2gMessages.msgDef;
import javax.xml.bind.annotation.XmlAccessType;
import javax.xml.bind.annotation.XmlAccessorType;
import javax.xml.bind.annotation.XmlElement;
import javax.xml.bind.annotation.XmlType;
/**
* <p>Java-Klasse für CableCheckReqType complex type.
*
* <p>Das folgende Schemafragment gibt den erwarteten Content an, der in dieser Klasse enthalten ist.
*
* <pre>
* &lt;complexType name="CableCheckReqType">
* &lt;complexContent>
* &lt;extension base="{urn:iso:15118:2:2013:MsgBody}BodyBaseType">
* &lt;sequence>
* &lt;element name="DC_EVStatus" type="{urn:iso:15118:2:2013:MsgDataTypes}DC_EVStatusType"/>
* &lt;/sequence>
* &lt;/extension>
* &lt;/complexContent>
* &lt;/complexType>
* </pre>
*
*
*/
@XmlAccessorType(XmlAccessType.FIELD)
@XmlType(name = "CableCheckReqType", namespace = "urn:iso:15118:2:2013:MsgBody", propOrder = {
"dcevStatus"
})
public class CableCheckReqType
extends BodyBaseType
{
@XmlElement(name = "DC_EVStatus", required = true)
protected DCEVStatusType dcevStatus;
/**
* Ruft den Wert der dcevStatus-Eigenschaft ab.
*
* @return
* possible object is
* {@link DCEVStatusType }
*
*/
public DCEVStatusType getDCEVStatus() {
return dcevStatus;
}
/**
* Legt den Wert der dcevStatus-Eigenschaft fest.
*
* @param value
* allowed object is
* {@link DCEVStatusType }
*
*/
public void setDCEVStatus(DCEVStatusType value) {
this.dcevStatus = value;
}
}

View File

@@ -0,0 +1,153 @@
/*******************************************************************************
* The MIT License (MIT)
*
* Copyright (c) 2015 - 2019 Dr. Marc Mültin (V2G Clarity)
*
* Permission is hereby granted, free of charge, to any person obtaining a copy
* of this software and associated documentation files (the "Software"), to deal
* in the Software without restriction, including without limitation the rights
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
* copies of the Software, and to permit persons to whom the Software is
* furnished to do so, subject to the following conditions:
*
* The above copyright notice and this permission notice shall be included in
* all copies or substantial portions of the Software.
*
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
* THE SOFTWARE.
*******************************************************************************/
//
// Diese Datei wurde mit der JavaTM Architecture for XML Binding(JAXB) Reference Implementation, v2.2.8-b130911.1802 generiert
// Siehe <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a>
// Änderungen an dieser Datei gehen bei einer Neukompilierung des Quellschemas verloren.
// Generiert: 2014.10.07 um 04:55:05 PM CEST
//
package com.v2gclarity.risev2g.shared.v2gMessages.msgDef;
import javax.xml.bind.annotation.XmlAccessType;
import javax.xml.bind.annotation.XmlAccessorType;
import javax.xml.bind.annotation.XmlElement;
import javax.xml.bind.annotation.XmlSchemaType;
import javax.xml.bind.annotation.XmlType;
/**
* <p>Java-Klasse für CableCheckResType complex type.
*
* <p>Das folgende Schemafragment gibt den erwarteten Content an, der in dieser Klasse enthalten ist.
*
* <pre>
* &lt;complexType name="CableCheckResType">
* &lt;complexContent>
* &lt;extension base="{urn:iso:15118:2:2013:MsgBody}BodyBaseType">
* &lt;sequence>
* &lt;element name="ResponseCode" type="{urn:iso:15118:2:2013:MsgDataTypes}responseCodeType"/>
* &lt;element name="DC_EVSEStatus" type="{urn:iso:15118:2:2013:MsgDataTypes}DC_EVSEStatusType"/>
* &lt;element name="EVSEProcessing" type="{urn:iso:15118:2:2013:MsgDataTypes}EVSEProcessingType"/>
* &lt;/sequence>
* &lt;/extension>
* &lt;/complexContent>
* &lt;/complexType>
* </pre>
*
*
*/
@XmlAccessorType(XmlAccessType.FIELD)
@XmlType(name = "CableCheckResType", namespace = "urn:iso:15118:2:2013:MsgBody", propOrder = {
"responseCode",
"dcevseStatus",
"evseProcessing"
})
public class CableCheckResType
extends BodyBaseType
{
@XmlElement(name = "ResponseCode", required = true)
@XmlSchemaType(name = "string")
protected ResponseCodeType responseCode;
@XmlElement(name = "DC_EVSEStatus", required = true)
protected DCEVSEStatusType dcevseStatus;
@XmlElement(name = "EVSEProcessing", required = true)
@XmlSchemaType(name = "string")
protected EVSEProcessingType evseProcessing;
/**
* Ruft den Wert der responseCode-Eigenschaft ab.
*
* @return
* possible object is
* {@link ResponseCodeType }
*
*/
public ResponseCodeType getResponseCode() {
return responseCode;
}
/**
* Legt den Wert der responseCode-Eigenschaft fest.
*
* @param value
* allowed object is
* {@link ResponseCodeType }
*
*/
public void setResponseCode(ResponseCodeType value) {
this.responseCode = value;
}
/**
* Ruft den Wert der dcevseStatus-Eigenschaft ab.
*
* @return
* possible object is
* {@link DCEVSEStatusType }
*
*/
public DCEVSEStatusType getDCEVSEStatus() {
return dcevseStatus;
}
/**
* Legt den Wert der dcevseStatus-Eigenschaft fest.
*
* @param value
* allowed object is
* {@link DCEVSEStatusType }
*
*/
public void setDCEVSEStatus(DCEVSEStatusType value) {
this.dcevseStatus = value;
}
/**
* Ruft den Wert der evseProcessing-Eigenschaft ab.
*
* @return
* possible object is
* {@link EVSEProcessingType }
*
*/
public EVSEProcessingType getEVSEProcessing() {
return evseProcessing;
}
/**
* Legt den Wert der evseProcessing-Eigenschaft fest.
*
* @param value
* allowed object is
* {@link EVSEProcessingType }
*
*/
public void setEVSEProcessing(EVSEProcessingType value) {
this.evseProcessing = value;
}
}

View File

@@ -0,0 +1,132 @@
/*******************************************************************************
* The MIT License (MIT)
*
* Copyright (c) 2015 - 2019 Dr. Marc Mültin (V2G Clarity)
*
* Permission is hereby granted, free of charge, to any person obtaining a copy
* of this software and associated documentation files (the "Software"), to deal
* in the Software without restriction, including without limitation the rights
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
* copies of the Software, and to permit persons to whom the Software is
* furnished to do so, subject to the following conditions:
*
* The above copyright notice and this permission notice shall be included in
* all copies or substantial portions of the Software.
*
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
* THE SOFTWARE.
*******************************************************************************/
//
// Diese Datei wurde mit der JavaTM Architecture for XML Binding(JAXB) Reference Implementation, v2.2.8-b130911.1802 generiert
// Siehe <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a>
// Änderungen an dieser Datei gehen bei einer Neukompilierung des Quellschemas verloren.
// Generiert: 2014.10.07 um 04:55:05 PM CEST
//
package com.v2gclarity.risev2g.shared.v2gMessages.msgDef;
import java.util.ArrayList;
import java.util.List;
import javax.xml.bind.annotation.XmlAccessType;
import javax.xml.bind.annotation.XmlAccessorType;
import javax.xml.bind.annotation.XmlAnyElement;
import javax.xml.bind.annotation.XmlAttribute;
import javax.xml.bind.annotation.XmlMixed;
import javax.xml.bind.annotation.XmlSchemaType;
import javax.xml.bind.annotation.XmlType;
/**
* <p>Java-Klasse für CanonicalizationMethodType complex type.
*
* <p>Das folgende Schemafragment gibt den erwarteten Content an, der in dieser Klasse enthalten ist.
*
* <pre>
* &lt;complexType name="CanonicalizationMethodType">
* &lt;complexContent>
* &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
* &lt;sequence>
* &lt;any maxOccurs="unbounded" minOccurs="0"/>
* &lt;/sequence>
* &lt;attribute name="Algorithm" use="required" type="{http://www.w3.org/2001/XMLSchema}anyURI" />
* &lt;/restriction>
* &lt;/complexContent>
* &lt;/complexType>
* </pre>
*
*
*/
@XmlAccessorType(XmlAccessType.FIELD)
@XmlType(name = "CanonicalizationMethodType", namespace = "http://www.w3.org/2000/09/xmldsig#", propOrder = {
"content"
})
public class CanonicalizationMethodType {
@XmlMixed
@XmlAnyElement(lax = true)
protected List<Object> content;
@XmlAttribute(name = "Algorithm", required = true)
@XmlSchemaType(name = "anyURI")
protected String algorithm;
/**
* Gets the value of the content property.
*
* <p>
* This accessor method returns a reference to the live list,
* not a snapshot. Therefore any modification you make to the
* returned list will be present inside the JAXB object.
* This is why there is not a <CODE>set</CODE> method for the content property.
*
* <p>
* For example, to add a new item, do as follows:
* <pre>
* getContent().add(newItem);
* </pre>
*
*
* <p>
* Objects of the following type(s) are allowed in the list
* {@link Object }
* {@link String }
*
*
*/
public List<Object> getContent() {
if (content == null) {
content = new ArrayList<Object>();
}
return this.content;
}
/**
* Ruft den Wert der algorithm-Eigenschaft ab.
*
* @return
* possible object is
* {@link String }
*
*/
public String getAlgorithm() {
return algorithm;
}
/**
* Legt den Wert der algorithm-Eigenschaft fest.
*
* @param value
* allowed object is
* {@link String }
*
*/
public void setAlgorithm(String value) {
this.algorithm = value;
}
}

View File

@@ -0,0 +1,153 @@
/*******************************************************************************
* The MIT License (MIT)
*
* Copyright (c) 2015 - 2019 Dr. Marc Mültin (V2G Clarity)
*
* Permission is hereby granted, free of charge, to any person obtaining a copy
* of this software and associated documentation files (the "Software"), to deal
* in the Software without restriction, including without limitation the rights
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
* copies of the Software, and to permit persons to whom the Software is
* furnished to do so, subject to the following conditions:
*
* The above copyright notice and this permission notice shall be included in
* all copies or substantial portions of the Software.
*
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
* THE SOFTWARE.
*******************************************************************************/
//
// Diese Datei wurde mit der JavaTM Architecture for XML Binding(JAXB) Reference Implementation, v2.2.8-b130911.1802 generiert
// Siehe <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a>
// Änderungen an dieser Datei gehen bei einer Neukompilierung des Quellschemas verloren.
// Generiert: 2014.10.07 um 04:55:05 PM CEST
//
package com.v2gclarity.risev2g.shared.v2gMessages.msgDef;
import javax.xml.bind.annotation.XmlAccessType;
import javax.xml.bind.annotation.XmlAccessorType;
import javax.xml.bind.annotation.XmlAttribute;
import javax.xml.bind.annotation.XmlElement;
import javax.xml.bind.annotation.XmlID;
import javax.xml.bind.annotation.XmlSchemaType;
import javax.xml.bind.annotation.XmlType;
import javax.xml.bind.annotation.adapters.CollapsedStringAdapter;
import javax.xml.bind.annotation.adapters.XmlJavaTypeAdapter;
/**
* <p>Java-Klasse für CertificateChainType complex type.
*
* <p>Das folgende Schemafragment gibt den erwarteten Content an, der in dieser Klasse enthalten ist.
*
* <pre>
* &lt;complexType name="CertificateChainType">
* &lt;complexContent>
* &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
* &lt;sequence>
* &lt;element name="Certificate" type="{urn:iso:15118:2:2013:MsgDataTypes}certificateType"/>
* &lt;element name="SubCertificates" type="{urn:iso:15118:2:2013:MsgDataTypes}SubCertificatesType" minOccurs="0"/>
* &lt;/sequence>
* &lt;attribute name="Id" type="{http://www.w3.org/2001/XMLSchema}ID" />
* &lt;/restriction>
* &lt;/complexContent>
* &lt;/complexType>
* </pre>
*
*
*/
@XmlAccessorType(XmlAccessType.FIELD)
@XmlType(name = "CertificateChainType", propOrder = {
"certificate",
"subCertificates"
})
public class CertificateChainType {
@XmlElement(name = "Certificate", required = true)
protected byte[] certificate;
@XmlElement(name = "SubCertificates")
protected SubCertificatesType subCertificates;
@XmlAttribute(name = "Id", namespace = "urn:iso:15118:2:2013:MsgDataTypes")
@XmlJavaTypeAdapter(CollapsedStringAdapter.class)
@XmlID
@XmlSchemaType(name = "ID")
protected String id;
/**
* Ruft den Wert der certificate-Eigenschaft ab.
*
* @return
* possible object is
* byte[]
*/
public byte[] getCertificate() {
return certificate;
}
/**
* Legt den Wert der certificate-Eigenschaft fest.
*
* @param value
* allowed object is
* byte[]
*/
public void setCertificate(byte[] value) {
this.certificate = value;
}
/**
* Ruft den Wert der subCertificates-Eigenschaft ab.
*
* @return
* possible object is
* {@link SubCertificatesType }
*
*/
public SubCertificatesType getSubCertificates() {
return subCertificates;
}
/**
* Legt den Wert der subCertificates-Eigenschaft fest.
*
* @param value
* allowed object is
* {@link SubCertificatesType }
*
*/
public void setSubCertificates(SubCertificatesType value) {
this.subCertificates = value;
}
/**
* Ruft den Wert der id-Eigenschaft ab.
*
* @return
* possible object is
* {@link String }
*
*/
public String getId() {
return id;
}
/**
* Legt den Wert der id-Eigenschaft fest.
*
* @param value
* allowed object is
* {@link String }
*
*/
public void setId(String value) {
this.id = value;
}
}

View File

@@ -0,0 +1,155 @@
/*******************************************************************************
* The MIT License (MIT)
*
* Copyright (c) 2015 - 2019 Dr. Marc Mültin (V2G Clarity)
*
* Permission is hereby granted, free of charge, to any person obtaining a copy
* of this software and associated documentation files (the "Software"), to deal
* in the Software without restriction, including without limitation the rights
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
* copies of the Software, and to permit persons to whom the Software is
* furnished to do so, subject to the following conditions:
*
* The above copyright notice and this permission notice shall be included in
* all copies or substantial portions of the Software.
*
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
* THE SOFTWARE.
*******************************************************************************/
//
// Diese Datei wurde mit der JavaTM Architecture for XML Binding(JAXB) Reference Implementation, v2.2.8-b130911.1802 generiert
// Siehe <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a>
// Änderungen an dieser Datei gehen bei einer Neukompilierung des Quellschemas verloren.
// Generiert: 2014.10.07 um 04:55:05 PM CEST
//
package com.v2gclarity.risev2g.shared.v2gMessages.msgDef;
import javax.xml.bind.annotation.XmlAccessType;
import javax.xml.bind.annotation.XmlAccessorType;
import javax.xml.bind.annotation.XmlAttribute;
import javax.xml.bind.annotation.XmlElement;
import javax.xml.bind.annotation.XmlID;
import javax.xml.bind.annotation.XmlSchemaType;
import javax.xml.bind.annotation.XmlType;
import javax.xml.bind.annotation.adapters.CollapsedStringAdapter;
import javax.xml.bind.annotation.adapters.XmlJavaTypeAdapter;
/**
* <p>Java-Klasse für CertificateInstallationReqType complex type.
*
* <p>Das folgende Schemafragment gibt den erwarteten Content an, der in dieser Klasse enthalten ist.
*
* <pre>
* &lt;complexType name="CertificateInstallationReqType">
* &lt;complexContent>
* &lt;extension base="{urn:iso:15118:2:2013:MsgBody}BodyBaseType">
* &lt;sequence>
* &lt;element name="OEMProvisioningCert" type="{urn:iso:15118:2:2013:MsgDataTypes}certificateType"/>
* &lt;element name="ListOfRootCertificateIDs" type="{urn:iso:15118:2:2013:MsgDataTypes}ListOfRootCertificateIDsType"/>
* &lt;/sequence>
* &lt;attribute name="Id" use="required" type="{http://www.w3.org/2001/XMLSchema}ID" />
* &lt;/extension>
* &lt;/complexContent>
* &lt;/complexType>
* </pre>
*
*
*/
@XmlAccessorType(XmlAccessType.FIELD)
@XmlType(name = "CertificateInstallationReqType", namespace = "urn:iso:15118:2:2013:MsgBody", propOrder = {
"oemProvisioningCert",
"listOfRootCertificateIDs"
})
public class CertificateInstallationReqType
extends BodyBaseType
{
@XmlElement(name = "OEMProvisioningCert", required = true)
protected byte[] oemProvisioningCert;
@XmlElement(name = "ListOfRootCertificateIDs", required = true)
protected ListOfRootCertificateIDsType listOfRootCertificateIDs;
@XmlAttribute(name = "Id", namespace = "urn:iso:15118:2:2013:MsgBody", required = true)
@XmlJavaTypeAdapter(CollapsedStringAdapter.class)
@XmlID
@XmlSchemaType(name = "ID")
protected String id;
/**
* Ruft den Wert der oemProvisioningCert-Eigenschaft ab.
*
* @return
* possible object is
* byte[]
*/
public byte[] getOEMProvisioningCert() {
return oemProvisioningCert;
}
/**
* Legt den Wert der oemProvisioningCert-Eigenschaft fest.
*
* @param value
* allowed object is
* byte[]
*/
public void setOEMProvisioningCert(byte[] value) {
this.oemProvisioningCert = value;
}
/**
* Ruft den Wert der listOfRootCertificateIDs-Eigenschaft ab.
*
* @return
* possible object is
* {@link ListOfRootCertificateIDsType }
*
*/
public ListOfRootCertificateIDsType getListOfRootCertificateIDs() {
return listOfRootCertificateIDs;
}
/**
* Legt den Wert der listOfRootCertificateIDs-Eigenschaft fest.
*
* @param value
* allowed object is
* {@link ListOfRootCertificateIDsType }
*
*/
public void setListOfRootCertificateIDs(ListOfRootCertificateIDsType value) {
this.listOfRootCertificateIDs = value;
}
/**
* Ruft den Wert der id-Eigenschaft ab.
*
* @return
* possible object is
* {@link String }
*
*/
public String getId() {
return id;
}
/**
* Legt den Wert der id-Eigenschaft fest.
*
* @param value
* allowed object is
* {@link String }
*
*/
public void setId(String value) {
this.id = value;
}
}

View File

@@ -0,0 +1,236 @@
/*******************************************************************************
* The MIT License (MIT)
*
* Copyright (c) 2015 - 2019 Dr. Marc Mültin (V2G Clarity)
*
* Permission is hereby granted, free of charge, to any person obtaining a copy
* of this software and associated documentation files (the "Software"), to deal
* in the Software without restriction, including without limitation the rights
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
* copies of the Software, and to permit persons to whom the Software is
* furnished to do so, subject to the following conditions:
*
* The above copyright notice and this permission notice shall be included in
* all copies or substantial portions of the Software.
*
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
* THE SOFTWARE.
*******************************************************************************/
//
// Diese Datei wurde mit der JavaTM Architecture for XML Binding(JAXB) Reference Implementation, v2.2.8-b130911.1802 generiert
// Siehe <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a>
// Änderungen an dieser Datei gehen bei einer Neukompilierung des Quellschemas verloren.
// Generiert: 2014.10.07 um 04:55:05 PM CEST
//
package com.v2gclarity.risev2g.shared.v2gMessages.msgDef;
import javax.xml.bind.annotation.XmlAccessType;
import javax.xml.bind.annotation.XmlAccessorType;
import javax.xml.bind.annotation.XmlElement;
import javax.xml.bind.annotation.XmlSchemaType;
import javax.xml.bind.annotation.XmlType;
/**
* <p>Java-Klasse für CertificateInstallationResType complex type.
*
* <p>Das folgende Schemafragment gibt den erwarteten Content an, der in dieser Klasse enthalten ist.
*
* <pre>
* &lt;complexType name="CertificateInstallationResType">
* &lt;complexContent>
* &lt;extension base="{urn:iso:15118:2:2013:MsgBody}BodyBaseType">
* &lt;sequence>
* &lt;element name="ResponseCode" type="{urn:iso:15118:2:2013:MsgDataTypes}responseCodeType"/>
* &lt;element name="SAProvisioningCertificateChain" type="{urn:iso:15118:2:2013:MsgDataTypes}CertificateChainType"/>
* &lt;element name="ContractSignatureCertChain" type="{urn:iso:15118:2:2013:MsgDataTypes}CertificateChainType"/>
* &lt;element name="ContractSignatureEncryptedPrivateKey" type="{urn:iso:15118:2:2013:MsgDataTypes}ContractSignatureEncryptedPrivateKeyType"/>
* &lt;element name="DHpublickey" type="{urn:iso:15118:2:2013:MsgDataTypes}DiffieHellmanPublickeyType"/>
* &lt;element name="eMAID" type="{urn:iso:15118:2:2013:MsgDataTypes}EMAIDType"/>
* &lt;/sequence>
* &lt;/extension>
* &lt;/complexContent>
* &lt;/complexType>
* </pre>
*
*
*/
@XmlAccessorType(XmlAccessType.FIELD)
@XmlType(name = "CertificateInstallationResType", namespace = "urn:iso:15118:2:2013:MsgBody", propOrder = {
"responseCode",
"saProvisioningCertificateChain",
"contractSignatureCertChain",
"contractSignatureEncryptedPrivateKey",
"dHpublickey",
"emaid"
})
public class CertificateInstallationResType
extends BodyBaseType
{
@XmlElement(name = "ResponseCode", required = true)
@XmlSchemaType(name = "string")
protected ResponseCodeType responseCode;
@XmlElement(name = "SAProvisioningCertificateChain", required = true)
protected CertificateChainType saProvisioningCertificateChain;
@XmlElement(name = "ContractSignatureCertChain", required = true)
protected CertificateChainType contractSignatureCertChain;
@XmlElement(name = "ContractSignatureEncryptedPrivateKey", required = true)
protected ContractSignatureEncryptedPrivateKeyType contractSignatureEncryptedPrivateKey;
@XmlElement(name = "DHpublickey", required = true)
protected DiffieHellmanPublickeyType dHpublickey;
@XmlElement(name = "eMAID", required = true)
protected EMAIDType emaid;
/**
* Ruft den Wert der responseCode-Eigenschaft ab.
*
* @return
* possible object is
* {@link ResponseCodeType }
*
*/
public ResponseCodeType getResponseCode() {
return responseCode;
}
/**
* Legt den Wert der responseCode-Eigenschaft fest.
*
* @param value
* allowed object is
* {@link ResponseCodeType }
*
*/
public void setResponseCode(ResponseCodeType value) {
this.responseCode = value;
}
/**
* Ruft den Wert der saProvisioningCertificateChain-Eigenschaft ab.
*
* @return
* possible object is
* {@link CertificateChainType }
*
*/
public CertificateChainType getSAProvisioningCertificateChain() {
return saProvisioningCertificateChain;
}
/**
* Legt den Wert der saProvisioningCertificateChain-Eigenschaft fest.
*
* @param value
* allowed object is
* {@link CertificateChainType }
*
*/
public void setSAProvisioningCertificateChain(CertificateChainType value) {
this.saProvisioningCertificateChain = value;
}
/**
* Ruft den Wert der contractSignatureCertChain-Eigenschaft ab.
*
* @return
* possible object is
* {@link CertificateChainType }
*
*/
public CertificateChainType getContractSignatureCertChain() {
return contractSignatureCertChain;
}
/**
* Legt den Wert der contractSignatureCertChain-Eigenschaft fest.
*
* @param value
* allowed object is
* {@link CertificateChainType }
*
*/
public void setContractSignatureCertChain(CertificateChainType value) {
this.contractSignatureCertChain = value;
}
/**
* Ruft den Wert der contractSignatureEncryptedPrivateKey-Eigenschaft ab.
*
* @return
* possible object is
* {@link ContractSignatureEncryptedPrivateKeyType }
*
*/
public ContractSignatureEncryptedPrivateKeyType getContractSignatureEncryptedPrivateKey() {
return contractSignatureEncryptedPrivateKey;
}
/**
* Legt den Wert der contractSignatureEncryptedPrivateKey-Eigenschaft fest.
*
* @param value
* allowed object is
* {@link ContractSignatureEncryptedPrivateKeyType }
*
*/
public void setContractSignatureEncryptedPrivateKey(ContractSignatureEncryptedPrivateKeyType value) {
this.contractSignatureEncryptedPrivateKey = value;
}
/**
* Ruft den Wert der dHpublickey-Eigenschaft ab.
*
* @return
* possible object is
* {@link DiffieHellmanPublickeyType }
*
*/
public DiffieHellmanPublickeyType getDHpublickey() {
return dHpublickey;
}
/**
* Legt den Wert der dHpublickey-Eigenschaft fest.
*
* @param value
* allowed object is
* {@link DiffieHellmanPublickeyType }
*
*/
public void setDHpublickey(DiffieHellmanPublickeyType value) {
this.dHpublickey = value;
}
/**
* Ruft den Wert der emaid-Eigenschaft ab.
*
* @return
* possible object is
* {@link EMAIDType }
*
*/
public EMAIDType getEMAID() {
return emaid;
}
/**
* Legt den Wert der emaid-Eigenschaft fest.
*
* @param value
* allowed object is
* {@link EMAIDType }
*
*/
public void setEMAID(EMAIDType value) {
this.emaid = value;
}
}

View File

@@ -0,0 +1,185 @@
/*******************************************************************************
* The MIT License (MIT)
*
* Copyright (c) 2015 - 2019 Dr. Marc Mültin (V2G Clarity)
*
* Permission is hereby granted, free of charge, to any person obtaining a copy
* of this software and associated documentation files (the "Software"), to deal
* in the Software without restriction, including without limitation the rights
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
* copies of the Software, and to permit persons to whom the Software is
* furnished to do so, subject to the following conditions:
*
* The above copyright notice and this permission notice shall be included in
* all copies or substantial portions of the Software.
*
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
* THE SOFTWARE.
*******************************************************************************/
//
// Diese Datei wurde mit der JavaTM Architecture for XML Binding(JAXB) Reference Implementation, v2.2.8-b130911.1802 generiert
// Siehe <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a>
// Änderungen an dieser Datei gehen bei einer Neukompilierung des Quellschemas verloren.
// Generiert: 2014.10.07 um 04:55:05 PM CEST
//
package com.v2gclarity.risev2g.shared.v2gMessages.msgDef;
import javax.xml.bind.annotation.XmlAccessType;
import javax.xml.bind.annotation.XmlAccessorType;
import javax.xml.bind.annotation.XmlAttribute;
import javax.xml.bind.annotation.XmlElement;
import javax.xml.bind.annotation.XmlID;
import javax.xml.bind.annotation.XmlSchemaType;
import javax.xml.bind.annotation.XmlType;
import javax.xml.bind.annotation.adapters.CollapsedStringAdapter;
import javax.xml.bind.annotation.adapters.XmlJavaTypeAdapter;
/**
* <p>Java-Klasse für CertificateUpdateReqType complex type.
*
* <p>Das folgende Schemafragment gibt den erwarteten Content an, der in dieser Klasse enthalten ist.
*
* <pre>
* &lt;complexType name="CertificateUpdateReqType">
* &lt;complexContent>
* &lt;extension base="{urn:iso:15118:2:2013:MsgBody}BodyBaseType">
* &lt;sequence>
* &lt;element name="ContractSignatureCertChain" type="{urn:iso:15118:2:2013:MsgDataTypes}CertificateChainType"/>
* &lt;element name="eMAID" type="{urn:iso:15118:2:2013:MsgDataTypes}eMAIDType"/>
* &lt;element name="ListOfRootCertificateIDs" type="{urn:iso:15118:2:2013:MsgDataTypes}ListOfRootCertificateIDsType"/>
* &lt;/sequence>
* &lt;attribute name="Id" use="required" type="{http://www.w3.org/2001/XMLSchema}ID" />
* &lt;/extension>
* &lt;/complexContent>
* &lt;/complexType>
* </pre>
*
*
*/
@XmlAccessorType(XmlAccessType.FIELD)
@XmlType(name = "CertificateUpdateReqType", namespace = "urn:iso:15118:2:2013:MsgBody", propOrder = {
"contractSignatureCertChain",
"emaid",
"listOfRootCertificateIDs"
})
public class CertificateUpdateReqType
extends BodyBaseType
{
@XmlElement(name = "ContractSignatureCertChain", required = true)
protected CertificateChainType contractSignatureCertChain;
@XmlElement(name = "eMAID", required = true)
protected String emaid;
@XmlElement(name = "ListOfRootCertificateIDs", required = true)
protected ListOfRootCertificateIDsType listOfRootCertificateIDs;
@XmlAttribute(name = "Id", namespace = "urn:iso:15118:2:2013:MsgBody", required = true)
@XmlJavaTypeAdapter(CollapsedStringAdapter.class)
@XmlID
@XmlSchemaType(name = "ID")
protected String id;
/**
* Ruft den Wert der contractSignatureCertChain-Eigenschaft ab.
*
* @return
* possible object is
* {@link CertificateChainType }
*
*/
public CertificateChainType getContractSignatureCertChain() {
return contractSignatureCertChain;
}
/**
* Legt den Wert der contractSignatureCertChain-Eigenschaft fest.
*
* @param value
* allowed object is
* {@link CertificateChainType }
*
*/
public void setContractSignatureCertChain(CertificateChainType value) {
this.contractSignatureCertChain = value;
}
/**
* Ruft den Wert der emaid-Eigenschaft ab.
*
* @return
* possible object is
* {@link String }
*
*/
public String getEMAID() {
return emaid;
}
/**
* Legt den Wert der emaid-Eigenschaft fest.
*
* @param value
* allowed object is
* {@link String }
*
*/
public void setEMAID(String value) {
this.emaid = value;
}
/**
* Ruft den Wert der listOfRootCertificateIDs-Eigenschaft ab.
*
* @return
* possible object is
* {@link ListOfRootCertificateIDsType }
*
*/
public ListOfRootCertificateIDsType getListOfRootCertificateIDs() {
return listOfRootCertificateIDs;
}
/**
* Legt den Wert der listOfRootCertificateIDs-Eigenschaft fest.
*
* @param value
* allowed object is
* {@link ListOfRootCertificateIDsType }
*
*/
public void setListOfRootCertificateIDs(ListOfRootCertificateIDsType value) {
this.listOfRootCertificateIDs = value;
}
/**
* Ruft den Wert der id-Eigenschaft ab.
*
* @return
* possible object is
* {@link String }
*
*/
public String getId() {
return id;
}
/**
* Legt den Wert der id-Eigenschaft fest.
*
* @param value
* allowed object is
* {@link String }
*
*/
public void setId(String value) {
this.id = value;
}
}

View File

@@ -0,0 +1,264 @@
/*******************************************************************************
* The MIT License (MIT)
*
* Copyright (c) 2015 - 2019 Dr. Marc Mültin (V2G Clarity)
*
* Permission is hereby granted, free of charge, to any person obtaining a copy
* of this software and associated documentation files (the "Software"), to deal
* in the Software without restriction, including without limitation the rights
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
* copies of the Software, and to permit persons to whom the Software is
* furnished to do so, subject to the following conditions:
*
* The above copyright notice and this permission notice shall be included in
* all copies or substantial portions of the Software.
*
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
* THE SOFTWARE.
*******************************************************************************/
//
// Diese Datei wurde mit der JavaTM Architecture for XML Binding(JAXB) Reference Implementation, v2.2.8-b130911.1802 generiert
// Siehe <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a>
// Änderungen an dieser Datei gehen bei einer Neukompilierung des Quellschemas verloren.
// Generiert: 2014.10.07 um 04:55:05 PM CEST
//
package com.v2gclarity.risev2g.shared.v2gMessages.msgDef;
import javax.xml.bind.annotation.XmlAccessType;
import javax.xml.bind.annotation.XmlAccessorType;
import javax.xml.bind.annotation.XmlElement;
import javax.xml.bind.annotation.XmlSchemaType;
import javax.xml.bind.annotation.XmlType;
/**
* <p>Java-Klasse für CertificateUpdateResType complex type.
*
* <p>Das folgende Schemafragment gibt den erwarteten Content an, der in dieser Klasse enthalten ist.
*
* <pre>
* &lt;complexType name="CertificateUpdateResType">
* &lt;complexContent>
* &lt;extension base="{urn:iso:15118:2:2013:MsgBody}BodyBaseType">
* &lt;sequence>
* &lt;element name="ResponseCode" type="{urn:iso:15118:2:2013:MsgDataTypes}responseCodeType"/>
* &lt;element name="SAProvisioningCertificateChain" type="{urn:iso:15118:2:2013:MsgDataTypes}CertificateChainType"/>
* &lt;element name="ContractSignatureCertChain" type="{urn:iso:15118:2:2013:MsgDataTypes}CertificateChainType"/>
* &lt;element name="ContractSignatureEncryptedPrivateKey" type="{urn:iso:15118:2:2013:MsgDataTypes}ContractSignatureEncryptedPrivateKeyType"/>
* &lt;element name="DHpublickey" type="{urn:iso:15118:2:2013:MsgDataTypes}DiffieHellmanPublickeyType"/>
* &lt;element name="eMAID" type="{urn:iso:15118:2:2013:MsgDataTypes}EMAIDType"/>
* &lt;element name="RetryCounter" type="{http://www.w3.org/2001/XMLSchema}short" minOccurs="0"/>
* &lt;/sequence>
* &lt;/extension>
* &lt;/complexContent>
* &lt;/complexType>
* </pre>
*
*
*/
@XmlAccessorType(XmlAccessType.FIELD)
@XmlType(name = "CertificateUpdateResType", namespace = "urn:iso:15118:2:2013:MsgBody", propOrder = {
"responseCode",
"saProvisioningCertificateChain",
"contractSignatureCertChain",
"contractSignatureEncryptedPrivateKey",
"dHpublickey",
"emaid",
"retryCounter"
})
public class CertificateUpdateResType
extends BodyBaseType
{
@XmlElement(name = "ResponseCode", required = true)
@XmlSchemaType(name = "string")
protected ResponseCodeType responseCode;
@XmlElement(name = "SAProvisioningCertificateChain", required = true)
protected CertificateChainType saProvisioningCertificateChain;
@XmlElement(name = "ContractSignatureCertChain", required = true)
protected CertificateChainType contractSignatureCertChain;
@XmlElement(name = "ContractSignatureEncryptedPrivateKey", required = true)
protected ContractSignatureEncryptedPrivateKeyType contractSignatureEncryptedPrivateKey;
@XmlElement(name = "DHpublickey", required = true)
protected DiffieHellmanPublickeyType dHpublickey;
@XmlElement(name = "eMAID", required = true)
protected EMAIDType emaid;
@XmlElement(name = "RetryCounter")
protected Short retryCounter;
/**
* Ruft den Wert der responseCode-Eigenschaft ab.
*
* @return
* possible object is
* {@link ResponseCodeType }
*
*/
public ResponseCodeType getResponseCode() {
return responseCode;
}
/**
* Legt den Wert der responseCode-Eigenschaft fest.
*
* @param value
* allowed object is
* {@link ResponseCodeType }
*
*/
public void setResponseCode(ResponseCodeType value) {
this.responseCode = value;
}
/**
* Ruft den Wert der saProvisioningCertificateChain-Eigenschaft ab.
*
* @return
* possible object is
* {@link CertificateChainType }
*
*/
public CertificateChainType getSAProvisioningCertificateChain() {
return saProvisioningCertificateChain;
}
/**
* Legt den Wert der saProvisioningCertificateChain-Eigenschaft fest.
*
* @param value
* allowed object is
* {@link CertificateChainType }
*
*/
public void setSAProvisioningCertificateChain(CertificateChainType value) {
this.saProvisioningCertificateChain = value;
}
/**
* Ruft den Wert der contractSignatureCertChain-Eigenschaft ab.
*
* @return
* possible object is
* {@link CertificateChainType }
*
*/
public CertificateChainType getContractSignatureCertChain() {
return contractSignatureCertChain;
}
/**
* Legt den Wert der contractSignatureCertChain-Eigenschaft fest.
*
* @param value
* allowed object is
* {@link CertificateChainType }
*
*/
public void setContractSignatureCertChain(CertificateChainType value) {
this.contractSignatureCertChain = value;
}
/**
* Ruft den Wert der contractSignatureEncryptedPrivateKey-Eigenschaft ab.
*
* @return
* possible object is
* {@link ContractSignatureEncryptedPrivateKeyType }
*
*/
public ContractSignatureEncryptedPrivateKeyType getContractSignatureEncryptedPrivateKey() {
return contractSignatureEncryptedPrivateKey;
}
/**
* Legt den Wert der contractSignatureEncryptedPrivateKey-Eigenschaft fest.
*
* @param value
* allowed object is
* {@link ContractSignatureEncryptedPrivateKeyType }
*
*/
public void setContractSignatureEncryptedPrivateKey(ContractSignatureEncryptedPrivateKeyType value) {
this.contractSignatureEncryptedPrivateKey = value;
}
/**
* Ruft den Wert der dHpublickey-Eigenschaft ab.
*
* @return
* possible object is
* {@link DiffieHellmanPublickeyType }
*
*/
public DiffieHellmanPublickeyType getDHpublickey() {
return dHpublickey;
}
/**
* Legt den Wert der dHpublickey-Eigenschaft fest.
*
* @param value
* allowed object is
* {@link DiffieHellmanPublickeyType }
*
*/
public void setDHpublickey(DiffieHellmanPublickeyType value) {
this.dHpublickey = value;
}
/**
* Ruft den Wert der emaid-Eigenschaft ab.
*
* @return
* possible object is
* {@link EMAIDType }
*
*/
public EMAIDType getEMAID() {
return emaid;
}
/**
* Legt den Wert der emaid-Eigenschaft fest.
*
* @param value
* allowed object is
* {@link EMAIDType }
*
*/
public void setEMAID(EMAIDType value) {
this.emaid = value;
}
/**
* Ruft den Wert der retryCounter-Eigenschaft ab.
*
* @return
* possible object is
* {@link Short }
*
*/
public Short getRetryCounter() {
return retryCounter;
}
/**
* Legt den Wert der retryCounter-Eigenschaft fest.
*
* @param value
* allowed object is
* {@link Short }
*
*/
public void setRetryCounter(Short value) {
this.retryCounter = value;
}
}

View File

@@ -0,0 +1,159 @@
/*******************************************************************************
* The MIT License (MIT)
*
* Copyright (c) 2015 - 2019 Dr. Marc Mültin (V2G Clarity)
*
* Permission is hereby granted, free of charge, to any person obtaining a copy
* of this software and associated documentation files (the "Software"), to deal
* in the Software without restriction, including without limitation the rights
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
* copies of the Software, and to permit persons to whom the Software is
* furnished to do so, subject to the following conditions:
*
* The above copyright notice and this permission notice shall be included in
* all copies or substantial portions of the Software.
*
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
* THE SOFTWARE.
*******************************************************************************/
//
// Diese Datei wurde mit der JavaTM Architecture for XML Binding(JAXB) Reference Implementation, v2.2.8-b130911.1802 generiert
// Siehe <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a>
// Änderungen an dieser Datei gehen bei einer Neukompilierung des Quellschemas verloren.
// Generiert: 2014.10.07 um 04:55:05 PM CEST
//
package com.v2gclarity.risev2g.shared.v2gMessages.msgDef;
import javax.xml.bind.JAXBElement;
import javax.xml.bind.annotation.XmlAccessType;
import javax.xml.bind.annotation.XmlAccessorType;
import javax.xml.bind.annotation.XmlElement;
import javax.xml.bind.annotation.XmlElementRef;
import javax.xml.bind.annotation.XmlSchemaType;
import javax.xml.bind.annotation.XmlType;
/**
* <p>Java-Klasse für ChargeParameterDiscoveryReqType complex type.
*
* <p>Das folgende Schemafragment gibt den erwarteten Content an, der in dieser Klasse enthalten ist.
*
* <pre>
* &lt;complexType name="ChargeParameterDiscoveryReqType">
* &lt;complexContent>
* &lt;extension base="{urn:iso:15118:2:2013:MsgBody}BodyBaseType">
* &lt;sequence>
* &lt;element name="MaxEntriesSAScheduleTuple" type="{http://www.w3.org/2001/XMLSchema}unsignedShort" minOccurs="0"/>
* &lt;element name="RequestedEnergyTransferMode" type="{urn:iso:15118:2:2013:MsgDataTypes}EnergyTransferModeType"/>
* &lt;element ref="{urn:iso:15118:2:2013:MsgDataTypes}EVChargeParameter"/>
* &lt;/sequence>
* &lt;/extension>
* &lt;/complexContent>
* &lt;/complexType>
* </pre>
*
*
*/
@XmlAccessorType(XmlAccessType.FIELD)
@XmlType(name = "ChargeParameterDiscoveryReqType", namespace = "urn:iso:15118:2:2013:MsgBody", propOrder = {
"maxEntriesSAScheduleTuple",
"requestedEnergyTransferMode",
"evChargeParameter"
})
public class ChargeParameterDiscoveryReqType
extends BodyBaseType
{
@XmlElement(name = "MaxEntriesSAScheduleTuple")
@XmlSchemaType(name = "unsignedShort")
protected Integer maxEntriesSAScheduleTuple;
@XmlElement(name = "RequestedEnergyTransferMode", required = true)
@XmlSchemaType(name = "string")
protected EnergyTransferModeType requestedEnergyTransferMode;
@XmlElementRef(name = "EVChargeParameter", namespace = "urn:iso:15118:2:2013:MsgDataTypes", type = JAXBElement.class)
protected JAXBElement<? extends EVChargeParameterType> evChargeParameter;
/**
* Ruft den Wert der maxEntriesSAScheduleTuple-Eigenschaft ab.
*
* @return
* possible object is
* {@link Integer }
*
*/
public Integer getMaxEntriesSAScheduleTuple() {
return maxEntriesSAScheduleTuple;
}
/**
* Legt den Wert der maxEntriesSAScheduleTuple-Eigenschaft fest.
*
* @param value
* allowed object is
* {@link Integer }
*
*/
public void setMaxEntriesSAScheduleTuple(Integer value) {
this.maxEntriesSAScheduleTuple = value;
}
/**
* Ruft den Wert der requestedEnergyTransferMode-Eigenschaft ab.
*
* @return
* possible object is
* {@link EnergyTransferModeType }
*
*/
public EnergyTransferModeType getRequestedEnergyTransferMode() {
return requestedEnergyTransferMode;
}
/**
* Legt den Wert der requestedEnergyTransferMode-Eigenschaft fest.
*
* @param value
* allowed object is
* {@link EnergyTransferModeType }
*
*/
public void setRequestedEnergyTransferMode(EnergyTransferModeType value) {
this.requestedEnergyTransferMode = value;
}
/**
* Ruft den Wert der evChargeParameter-Eigenschaft ab.
*
* @return
* possible object is
* {@link JAXBElement }{@code <}{@link EVChargeParameterType }{@code >}
* {@link JAXBElement }{@code <}{@link DCEVChargeParameterType }{@code >}
* {@link JAXBElement }{@code <}{@link ACEVChargeParameterType }{@code >}
*
*/
public JAXBElement<? extends EVChargeParameterType> getEVChargeParameter() {
return evChargeParameter;
}
/**
* Legt den Wert der evChargeParameter-Eigenschaft fest.
*
* @param value
* allowed object is
* {@link JAXBElement }{@code <}{@link EVChargeParameterType }{@code >}
* {@link JAXBElement }{@code <}{@link DCEVChargeParameterType }{@code >}
* {@link JAXBElement }{@code <}{@link ACEVChargeParameterType }{@code >}
*
*/
public void setEVChargeParameter(JAXBElement<? extends EVChargeParameterType> value) {
this.evChargeParameter = value;
}
}

View File

@@ -0,0 +1,189 @@
/*******************************************************************************
* The MIT License (MIT)
*
* Copyright (c) 2015 - 2019 Dr. Marc Mültin (V2G Clarity)
*
* Permission is hereby granted, free of charge, to any person obtaining a copy
* of this software and associated documentation files (the "Software"), to deal
* in the Software without restriction, including without limitation the rights
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
* copies of the Software, and to permit persons to whom the Software is
* furnished to do so, subject to the following conditions:
*
* The above copyright notice and this permission notice shall be included in
* all copies or substantial portions of the Software.
*
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
* THE SOFTWARE.
*******************************************************************************/
//
// Diese Datei wurde mit der JavaTM Architecture for XML Binding(JAXB) Reference Implementation, v2.2.8-b130911.1802 generiert
// Siehe <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a>
// Änderungen an dieser Datei gehen bei einer Neukompilierung des Quellschemas verloren.
// Generiert: 2014.10.07 um 04:55:05 PM CEST
//
package com.v2gclarity.risev2g.shared.v2gMessages.msgDef;
import javax.xml.bind.JAXBElement;
import javax.xml.bind.annotation.XmlAccessType;
import javax.xml.bind.annotation.XmlAccessorType;
import javax.xml.bind.annotation.XmlElement;
import javax.xml.bind.annotation.XmlElementRef;
import javax.xml.bind.annotation.XmlSchemaType;
import javax.xml.bind.annotation.XmlType;
/**
* <p>Java-Klasse für ChargeParameterDiscoveryResType complex type.
*
* <p>Das folgende Schemafragment gibt den erwarteten Content an, der in dieser Klasse enthalten ist.
*
* <pre>
* &lt;complexType name="ChargeParameterDiscoveryResType">
* &lt;complexContent>
* &lt;extension base="{urn:iso:15118:2:2013:MsgBody}BodyBaseType">
* &lt;sequence>
* &lt;element name="ResponseCode" type="{urn:iso:15118:2:2013:MsgDataTypes}responseCodeType"/>
* &lt;element name="EVSEProcessing" type="{urn:iso:15118:2:2013:MsgDataTypes}EVSEProcessingType"/>
* &lt;element ref="{urn:iso:15118:2:2013:MsgDataTypes}SASchedules" minOccurs="0"/>
* &lt;element ref="{urn:iso:15118:2:2013:MsgDataTypes}EVSEChargeParameter"/>
* &lt;/sequence>
* &lt;/extension>
* &lt;/complexContent>
* &lt;/complexType>
* </pre>
*
*
*/
@XmlAccessorType(XmlAccessType.FIELD)
@XmlType(name = "ChargeParameterDiscoveryResType", namespace = "urn:iso:15118:2:2013:MsgBody", propOrder = {
"responseCode",
"evseProcessing",
"saSchedules",
"evseChargeParameter"
})
public class ChargeParameterDiscoveryResType
extends BodyBaseType
{
@XmlElement(name = "ResponseCode", required = true)
@XmlSchemaType(name = "string")
protected ResponseCodeType responseCode;
@XmlElement(name = "EVSEProcessing", required = true)
@XmlSchemaType(name = "string")
protected EVSEProcessingType evseProcessing;
@XmlElementRef(name = "SASchedules", namespace = "urn:iso:15118:2:2013:MsgDataTypes", type = JAXBElement.class, required = false)
protected JAXBElement<? extends SASchedulesType> saSchedules;
@XmlElementRef(name = "EVSEChargeParameter", namespace = "urn:iso:15118:2:2013:MsgDataTypes", type = JAXBElement.class)
protected JAXBElement<? extends EVSEChargeParameterType> evseChargeParameter;
/**
* Ruft den Wert der responseCode-Eigenschaft ab.
*
* @return
* possible object is
* {@link ResponseCodeType }
*
*/
public ResponseCodeType getResponseCode() {
return responseCode;
}
/**
* Legt den Wert der responseCode-Eigenschaft fest.
*
* @param value
* allowed object is
* {@link ResponseCodeType }
*
*/
public void setResponseCode(ResponseCodeType value) {
this.responseCode = value;
}
/**
* Ruft den Wert der evseProcessing-Eigenschaft ab.
*
* @return
* possible object is
* {@link EVSEProcessingType }
*
*/
public EVSEProcessingType getEVSEProcessing() {
return evseProcessing;
}
/**
* Legt den Wert der evseProcessing-Eigenschaft fest.
*
* @param value
* allowed object is
* {@link EVSEProcessingType }
*
*/
public void setEVSEProcessing(EVSEProcessingType value) {
this.evseProcessing = value;
}
/**
* Ruft den Wert der saSchedules-Eigenschaft ab.
*
* @return
* possible object is
* {@link JAXBElement }{@code <}{@link SAScheduleListType }{@code >}
* {@link JAXBElement }{@code <}{@link SASchedulesType }{@code >}
*
*/
public JAXBElement<? extends SASchedulesType> getSASchedules() {
return saSchedules;
}
/**
* Legt den Wert der saSchedules-Eigenschaft fest.
*
* @param value
* allowed object is
* {@link JAXBElement }{@code <}{@link SAScheduleListType }{@code >}
* {@link JAXBElement }{@code <}{@link SASchedulesType }{@code >}
*
*/
public void setSASchedules(JAXBElement<? extends SASchedulesType> value) {
this.saSchedules = value;
}
/**
* Ruft den Wert der evseChargeParameter-Eigenschaft ab.
*
* @return
* possible object is
* {@link JAXBElement }{@code <}{@link DCEVSEChargeParameterType }{@code >}
* {@link JAXBElement }{@code <}{@link EVSEChargeParameterType }{@code >}
* {@link JAXBElement }{@code <}{@link ACEVSEChargeParameterType }{@code >}
*
*/
public JAXBElement<? extends EVSEChargeParameterType> getEVSEChargeParameter() {
return evseChargeParameter;
}
/**
* Legt den Wert der evseChargeParameter-Eigenschaft fest.
*
* @param value
* allowed object is
* {@link JAXBElement }{@code <}{@link DCEVSEChargeParameterType }{@code >}
* {@link JAXBElement }{@code <}{@link EVSEChargeParameterType }{@code >}
* {@link JAXBElement }{@code <}{@link ACEVSEChargeParameterType }{@code >}
*
*/
public void setEVSEChargeParameter(JAXBElement<? extends EVSEChargeParameterType> value) {
this.evseChargeParameter = value;
}
}

View File

@@ -0,0 +1,84 @@
/*******************************************************************************
* The MIT License (MIT)
*
* Copyright (c) 2015 - 2019 Dr. Marc Mültin (V2G Clarity)
*
* Permission is hereby granted, free of charge, to any person obtaining a copy
* of this software and associated documentation files (the "Software"), to deal
* in the Software without restriction, including without limitation the rights
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
* copies of the Software, and to permit persons to whom the Software is
* furnished to do so, subject to the following conditions:
*
* The above copyright notice and this permission notice shall be included in
* all copies or substantial portions of the Software.
*
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
* THE SOFTWARE.
*******************************************************************************/
//
// Diese Datei wurde mit der JavaTM Architecture for XML Binding(JAXB) Reference Implementation, v2.2.8-b130911.1802 generiert
// Siehe <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a>
// Änderungen an dieser Datei gehen bei einer Neukompilierung des Quellschemas verloren.
// Generiert: 2014.10.07 um 04:55:05 PM CEST
//
package com.v2gclarity.risev2g.shared.v2gMessages.msgDef;
import javax.xml.bind.annotation.XmlEnum;
import javax.xml.bind.annotation.XmlEnumValue;
import javax.xml.bind.annotation.XmlType;
/**
* <p>Java-Klasse für chargeProgressType.
*
* <p>Das folgende Schemafragment gibt den erwarteten Content an, der in dieser Klasse enthalten ist.
* <p>
* <pre>
* &lt;simpleType name="chargeProgressType">
* &lt;restriction base="{http://www.w3.org/2001/XMLSchema}string">
* &lt;enumeration value="Start"/>
* &lt;enumeration value="Stop"/>
* &lt;enumeration value="Renegotiate"/>
* &lt;/restriction>
* &lt;/simpleType>
* </pre>
*
*/
@XmlType(name = "chargeProgressType")
@XmlEnum
public enum ChargeProgressType {
@XmlEnumValue("Start")
START("Start"),
@XmlEnumValue("Stop")
STOP("Stop"),
@XmlEnumValue("Renegotiate")
RENEGOTIATE("Renegotiate");
private final String value;
ChargeProgressType(String v) {
value = v;
}
public String value() {
return value;
}
public static ChargeProgressType fromValue(String v) {
for (ChargeProgressType c: ChargeProgressType.values()) {
if (c.value.equals(v)) {
return c;
}
}
throw new IllegalArgumentException(v);
}
}

View File

@@ -0,0 +1,94 @@
/*******************************************************************************
* The MIT License (MIT)
*
* Copyright (c) 2015 - 2019 Dr. Marc Mültin (V2G Clarity)
*
* Permission is hereby granted, free of charge, to any person obtaining a copy
* of this software and associated documentation files (the "Software"), to deal
* in the Software without restriction, including without limitation the rights
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
* copies of the Software, and to permit persons to whom the Software is
* furnished to do so, subject to the following conditions:
*
* The above copyright notice and this permission notice shall be included in
* all copies or substantial portions of the Software.
*
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
* THE SOFTWARE.
*******************************************************************************/
//
// Diese Datei wurde mit der JavaTM Architecture for XML Binding(JAXB) Reference Implementation, v2.2.8-b130911.1802 generiert
// Siehe <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a>
// Änderungen an dieser Datei gehen bei einer Neukompilierung des Quellschemas verloren.
// Generiert: 2014.10.07 um 04:55:05 PM CEST
//
package com.v2gclarity.risev2g.shared.v2gMessages.msgDef;
import javax.xml.bind.annotation.XmlAccessType;
import javax.xml.bind.annotation.XmlAccessorType;
import javax.xml.bind.annotation.XmlElement;
import javax.xml.bind.annotation.XmlType;
/**
* <p>Java-Klasse für ChargeServiceType complex type.
*
* <p>Das folgende Schemafragment gibt den erwarteten Content an, der in dieser Klasse enthalten ist.
*
* <pre>
* &lt;complexType name="ChargeServiceType">
* &lt;complexContent>
* &lt;extension base="{urn:iso:15118:2:2013:MsgDataTypes}ServiceType">
* &lt;sequence>
* &lt;element name="SupportedEnergyTransferMode" type="{urn:iso:15118:2:2013:MsgDataTypes}SupportedEnergyTransferModeType"/>
* &lt;/sequence>
* &lt;/extension>
* &lt;/complexContent>
* &lt;/complexType>
* </pre>
*
*
*/
@XmlAccessorType(XmlAccessType.FIELD)
@XmlType(name = "ChargeServiceType", propOrder = {
"supportedEnergyTransferMode"
})
public class ChargeServiceType
extends ServiceType
{
@XmlElement(name = "SupportedEnergyTransferMode", required = true)
protected SupportedEnergyTransferModeType supportedEnergyTransferMode;
/**
* Ruft den Wert der supportedEnergyTransferMode-Eigenschaft ab.
*
* @return
* possible object is
* {@link SupportedEnergyTransferModeType }
*
*/
public SupportedEnergyTransferModeType getSupportedEnergyTransferMode() {
return supportedEnergyTransferMode;
}
/**
* Legt den Wert der supportedEnergyTransferMode-Eigenschaft fest.
*
* @param value
* allowed object is
* {@link SupportedEnergyTransferModeType }
*
*/
public void setSupportedEnergyTransferMode(SupportedEnergyTransferModeType value) {
this.supportedEnergyTransferMode = value;
}
}

View File

@@ -0,0 +1,99 @@
/*******************************************************************************
* The MIT License (MIT)
*
* Copyright (c) 2015 - 2019 Dr. Marc Mültin (V2G Clarity)
*
* Permission is hereby granted, free of charge, to any person obtaining a copy
* of this software and associated documentation files (the "Software"), to deal
* in the Software without restriction, including without limitation the rights
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
* copies of the Software, and to permit persons to whom the Software is
* furnished to do so, subject to the following conditions:
*
* The above copyright notice and this permission notice shall be included in
* all copies or substantial portions of the Software.
*
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
* THE SOFTWARE.
*******************************************************************************/
//
// Diese Datei wurde mit der JavaTM Architecture for XML Binding(JAXB) Reference Implementation, v2.2.8-b130911.1802 generiert
// Siehe <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a>
// Änderungen an dieser Datei gehen bei einer Neukompilierung des Quellschemas verloren.
// Generiert: 2014.10.07 um 04:55:05 PM CEST
//
package com.v2gclarity.risev2g.shared.v2gMessages.msgDef;
import java.util.ArrayList;
import java.util.List;
import javax.xml.bind.annotation.XmlAccessType;
import javax.xml.bind.annotation.XmlAccessorType;
import javax.xml.bind.annotation.XmlElement;
import javax.xml.bind.annotation.XmlType;
/**
* <p>Java-Klasse für ChargingProfileType complex type.
*
* <p>Das folgende Schemafragment gibt den erwarteten Content an, der in dieser Klasse enthalten ist.
*
* <pre>
* &lt;complexType name="ChargingProfileType">
* &lt;complexContent>
* &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
* &lt;sequence>
* &lt;element name="ProfileEntry" type="{urn:iso:15118:2:2013:MsgDataTypes}ProfileEntryType" maxOccurs="24"/>
* &lt;/sequence>
* &lt;/restriction>
* &lt;/complexContent>
* &lt;/complexType>
* </pre>
*
*
*/
@XmlAccessorType(XmlAccessType.FIELD)
@XmlType(name = "ChargingProfileType", propOrder = {
"profileEntry"
})
public class ChargingProfileType {
@XmlElement(name = "ProfileEntry", required = true)
protected List<ProfileEntryType> profileEntry;
/**
* Gets the value of the profileEntry property.
*
* <p>
* This accessor method returns a reference to the live list,
* not a snapshot. Therefore any modification you make to the
* returned list will be present inside the JAXB object.
* This is why there is not a <CODE>set</CODE> method for the profileEntry property.
*
* <p>
* For example, to add a new item, do as follows:
* <pre>
* getProfileEntry().add(newItem);
* </pre>
*
*
* <p>
* Objects of the following type(s) are allowed in the list
* {@link ProfileEntryType }
*
*
*/
public List<ProfileEntryType> getProfileEntry() {
if (profileEntry == null) {
profileEntry = new ArrayList<ProfileEntryType>();
}
return this.profileEntry;
}
}

View File

@@ -0,0 +1,81 @@
/*******************************************************************************
* The MIT License (MIT)
*
* Copyright (c) 2015 - 2019 Dr. Marc Mültin (V2G Clarity)
*
* Permission is hereby granted, free of charge, to any person obtaining a copy
* of this software and associated documentation files (the "Software"), to deal
* in the Software without restriction, including without limitation the rights
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
* copies of the Software, and to permit persons to whom the Software is
* furnished to do so, subject to the following conditions:
*
* The above copyright notice and this permission notice shall be included in
* all copies or substantial portions of the Software.
*
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
* THE SOFTWARE.
*******************************************************************************/
//
// Diese Datei wurde mit der JavaTM Architecture for XML Binding(JAXB) Reference Implementation, v2.2.8-b130911.1802 generiert
// Siehe <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a>
// Änderungen an dieser Datei gehen bei einer Neukompilierung des Quellschemas verloren.
// Generiert: 2014.10.07 um 04:55:05 PM CEST
//
package com.v2gclarity.risev2g.shared.v2gMessages.msgDef;
import javax.xml.bind.annotation.XmlEnum;
import javax.xml.bind.annotation.XmlEnumValue;
import javax.xml.bind.annotation.XmlType;
/**
* <p>Java-Klasse für chargingSessionType.
*
* <p>Das folgende Schemafragment gibt den erwarteten Content an, der in dieser Klasse enthalten ist.
* <p>
* <pre>
* &lt;simpleType name="chargingSessionType">
* &lt;restriction base="{http://www.w3.org/2001/XMLSchema}string">
* &lt;enumeration value="Terminate"/>
* &lt;enumeration value="Pause"/>
* &lt;/restriction>
* &lt;/simpleType>
* </pre>
*
*/
@XmlType(name = "chargingSessionType")
@XmlEnum
public enum ChargingSessionType {
@XmlEnumValue("Terminate")
TERMINATE("Terminate"),
@XmlEnumValue("Pause")
PAUSE("Pause");
private final String value;
ChargingSessionType(String v) {
value = v;
}
public String value() {
return value;
}
public static ChargingSessionType fromValue(String v) {
for (ChargingSessionType c: ChargingSessionType.values()) {
if (c.value.equals(v)) {
return c;
}
}
throw new IllegalArgumentException(v);
}
}

View File

@@ -0,0 +1,64 @@
/*******************************************************************************
* The MIT License (MIT)
*
* Copyright (c) 2015 - 2019 Dr. Marc Mültin (V2G Clarity)
*
* Permission is hereby granted, free of charge, to any person obtaining a copy
* of this software and associated documentation files (the "Software"), to deal
* in the Software without restriction, including without limitation the rights
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
* copies of the Software, and to permit persons to whom the Software is
* furnished to do so, subject to the following conditions:
*
* The above copyright notice and this permission notice shall be included in
* all copies or substantial portions of the Software.
*
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
* THE SOFTWARE.
*******************************************************************************/
//
// Diese Datei wurde mit der JavaTM Architecture for XML Binding(JAXB) Reference Implementation, v2.2.8-b130911.1802 generiert
// Siehe <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a>
// Änderungen an dieser Datei gehen bei einer Neukompilierung des Quellschemas verloren.
// Generiert: 2014.10.07 um 04:55:05 PM CEST
//
package com.v2gclarity.risev2g.shared.v2gMessages.msgDef;
import javax.xml.bind.annotation.XmlAccessType;
import javax.xml.bind.annotation.XmlAccessorType;
import javax.xml.bind.annotation.XmlType;
/**
* <p>Java-Klasse für ChargingStatusReqType complex type.
*
* <p>Das folgende Schemafragment gibt den erwarteten Content an, der in dieser Klasse enthalten ist.
*
* <pre>
* &lt;complexType name="ChargingStatusReqType">
* &lt;complexContent>
* &lt;extension base="{urn:iso:15118:2:2013:MsgBody}BodyBaseType">
* &lt;sequence>
* &lt;/sequence>
* &lt;/extension>
* &lt;/complexContent>
* &lt;/complexType>
* </pre>
*
*
*/
@XmlAccessorType(XmlAccessType.FIELD)
@XmlType(name = "ChargingStatusReqType", namespace = "urn:iso:15118:2:2013:MsgBody")
public class ChargingStatusReqType
extends BodyBaseType
{
}

View File

@@ -0,0 +1,257 @@
/*******************************************************************************
* The MIT License (MIT)
*
* Copyright (c) 2015 - 2019 Dr. Marc Mültin (V2G Clarity)
*
* Permission is hereby granted, free of charge, to any person obtaining a copy
* of this software and associated documentation files (the "Software"), to deal
* in the Software without restriction, including without limitation the rights
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
* copies of the Software, and to permit persons to whom the Software is
* furnished to do so, subject to the following conditions:
*
* The above copyright notice and this permission notice shall be included in
* all copies or substantial portions of the Software.
*
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
* THE SOFTWARE.
*******************************************************************************/
//
// Diese Datei wurde mit der JavaTM Architecture for XML Binding(JAXB) Reference Implementation, v2.2.8-b130911.1802 generiert
// Siehe <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a>
// Änderungen an dieser Datei gehen bei einer Neukompilierung des Quellschemas verloren.
// Generiert: 2014.10.07 um 04:55:05 PM CEST
//
package com.v2gclarity.risev2g.shared.v2gMessages.msgDef;
import javax.xml.bind.annotation.XmlAccessType;
import javax.xml.bind.annotation.XmlAccessorType;
import javax.xml.bind.annotation.XmlElement;
import javax.xml.bind.annotation.XmlSchemaType;
import javax.xml.bind.annotation.XmlType;
/**
* <p>Java-Klasse für ChargingStatusResType complex type.
*
* <p>Das folgende Schemafragment gibt den erwarteten Content an, der in dieser Klasse enthalten ist.
*
* <pre>
* &lt;complexType name="ChargingStatusResType">
* &lt;complexContent>
* &lt;extension base="{urn:iso:15118:2:2013:MsgBody}BodyBaseType">
* &lt;sequence>
* &lt;element name="ResponseCode" type="{urn:iso:15118:2:2013:MsgDataTypes}responseCodeType"/>
* &lt;element name="EVSEID" type="{urn:iso:15118:2:2013:MsgDataTypes}evseIDType"/>
* &lt;element name="SAScheduleTupleID" type="{urn:iso:15118:2:2013:MsgDataTypes}SAIDType"/>
* &lt;element name="EVSEMaxCurrent" type="{urn:iso:15118:2:2013:MsgDataTypes}PhysicalValueType" minOccurs="0"/>
* &lt;element name="MeterInfo" type="{urn:iso:15118:2:2013:MsgDataTypes}MeterInfoType" minOccurs="0"/>
* &lt;element name="ReceiptRequired" type="{http://www.w3.org/2001/XMLSchema}boolean" minOccurs="0"/>
* &lt;element name="AC_EVSEStatus" type="{urn:iso:15118:2:2013:MsgDataTypes}AC_EVSEStatusType"/>
* &lt;/sequence>
* &lt;/extension>
* &lt;/complexContent>
* &lt;/complexType>
* </pre>
*
*
*/
@XmlAccessorType(XmlAccessType.FIELD)
@XmlType(name = "ChargingStatusResType", namespace = "urn:iso:15118:2:2013:MsgBody", propOrder = {
"responseCode",
"evseid",
"saScheduleTupleID",
"evseMaxCurrent",
"meterInfo",
"receiptRequired",
"acevseStatus"
})
public class ChargingStatusResType
extends BodyBaseType
{
@XmlElement(name = "ResponseCode", required = true)
@XmlSchemaType(name = "string")
protected ResponseCodeType responseCode;
@XmlElement(name = "EVSEID", required = true)
protected String evseid;
@XmlElement(name = "SAScheduleTupleID")
@XmlSchemaType(name = "unsignedByte")
protected short saScheduleTupleID;
@XmlElement(name = "EVSEMaxCurrent")
protected PhysicalValueType evseMaxCurrent;
@XmlElement(name = "MeterInfo")
protected MeterInfoType meterInfo;
@XmlElement(name = "ReceiptRequired")
protected Boolean receiptRequired;
@XmlElement(name = "AC_EVSEStatus", required = true)
protected ACEVSEStatusType acevseStatus;
/**
* Ruft den Wert der responseCode-Eigenschaft ab.
*
* @return
* possible object is
* {@link ResponseCodeType }
*
*/
public ResponseCodeType getResponseCode() {
return responseCode;
}
/**
* Legt den Wert der responseCode-Eigenschaft fest.
*
* @param value
* allowed object is
* {@link ResponseCodeType }
*
*/
public void setResponseCode(ResponseCodeType value) {
this.responseCode = value;
}
/**
* Ruft den Wert der evseid-Eigenschaft ab.
*
* @return
* possible object is
* {@link String }
*
*/
public String getEVSEID() {
return evseid;
}
/**
* Legt den Wert der evseid-Eigenschaft fest.
*
* @param value
* allowed object is
* {@link String }
*
*/
public void setEVSEID(String value) {
this.evseid = value;
}
/**
* Ruft den Wert der saScheduleTupleID-Eigenschaft ab.
*
*/
public short getSAScheduleTupleID() {
return saScheduleTupleID;
}
/**
* Legt den Wert der saScheduleTupleID-Eigenschaft fest.
*
*/
public void setSAScheduleTupleID(short value) {
this.saScheduleTupleID = value;
}
/**
* Ruft den Wert der evseMaxCurrent-Eigenschaft ab.
*
* @return
* possible object is
* {@link PhysicalValueType }
*
*/
public PhysicalValueType getEVSEMaxCurrent() {
return evseMaxCurrent;
}
/**
* Legt den Wert der evseMaxCurrent-Eigenschaft fest.
*
* @param value
* allowed object is
* {@link PhysicalValueType }
*
*/
public void setEVSEMaxCurrent(PhysicalValueType value) {
this.evseMaxCurrent = value;
}
/**
* Ruft den Wert der meterInfo-Eigenschaft ab.
*
* @return
* possible object is
* {@link MeterInfoType }
*
*/
public MeterInfoType getMeterInfo() {
return meterInfo;
}
/**
* Legt den Wert der meterInfo-Eigenschaft fest.
*
* @param value
* allowed object is
* {@link MeterInfoType }
*
*/
public void setMeterInfo(MeterInfoType value) {
this.meterInfo = value;
}
/**
* Ruft den Wert der receiptRequired-Eigenschaft ab.
*
* @return
* possible object is
* {@link Boolean }
*
*/
public Boolean isReceiptRequired() {
return receiptRequired;
}
/**
* Legt den Wert der receiptRequired-Eigenschaft fest.
*
* @param value
* allowed object is
* {@link Boolean }
*
*/
public void setReceiptRequired(Boolean value) {
this.receiptRequired = value;
}
/**
* Ruft den Wert der acevseStatus-Eigenschaft ab.
*
* @return
* possible object is
* {@link ACEVSEStatusType }
*
*/
public ACEVSEStatusType getACEVSEStatus() {
return acevseStatus;
}
/**
* Legt den Wert der acevseStatus-Eigenschaft fest.
*
* @param value
* allowed object is
* {@link ACEVSEStatusType }
*
*/
public void setACEVSEStatus(ACEVSEStatusType value) {
this.acevseStatus = value;
}
}

View File

@@ -0,0 +1,127 @@
/*******************************************************************************
* The MIT License (MIT)
*
* Copyright (c) 2015 - 2019 Dr. Marc Mültin (V2G Clarity)
*
* Permission is hereby granted, free of charge, to any person obtaining a copy
* of this software and associated documentation files (the "Software"), to deal
* in the Software without restriction, including without limitation the rights
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
* copies of the Software, and to permit persons to whom the Software is
* furnished to do so, subject to the following conditions:
*
* The above copyright notice and this permission notice shall be included in
* all copies or substantial portions of the Software.
*
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
* THE SOFTWARE.
*******************************************************************************/
//
// Diese Datei wurde mit der JavaTM Architecture for XML Binding(JAXB) Reference Implementation, v2.2.8-b130911.1802 generiert
// Siehe <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a>
// Änderungen an dieser Datei gehen bei einer Neukompilierung des Quellschemas verloren.
// Generiert: 2014.10.07 um 04:55:05 PM CEST
//
package com.v2gclarity.risev2g.shared.v2gMessages.msgDef;
import java.util.ArrayList;
import java.util.List;
import javax.xml.bind.annotation.XmlAccessType;
import javax.xml.bind.annotation.XmlAccessorType;
import javax.xml.bind.annotation.XmlElement;
import javax.xml.bind.annotation.XmlType;
/**
* <p>Java-Klasse für ConsumptionCostType complex type.
*
* <p>Das folgende Schemafragment gibt den erwarteten Content an, der in dieser Klasse enthalten ist.
*
* <pre>
* &lt;complexType name="ConsumptionCostType">
* &lt;complexContent>
* &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
* &lt;sequence>
* &lt;element name="startValue" type="{urn:iso:15118:2:2013:MsgDataTypes}PhysicalValueType"/>
* &lt;element name="Cost" type="{urn:iso:15118:2:2013:MsgDataTypes}CostType" maxOccurs="3"/>
* &lt;/sequence>
* &lt;/restriction>
* &lt;/complexContent>
* &lt;/complexType>
* </pre>
*
*
*/
@XmlAccessorType(XmlAccessType.FIELD)
@XmlType(name = "ConsumptionCostType", propOrder = {
"startValue",
"cost"
})
public class ConsumptionCostType {
@XmlElement(required = true)
protected PhysicalValueType startValue;
@XmlElement(name = "Cost", required = true)
protected List<CostType> cost;
/**
* Ruft den Wert der startValue-Eigenschaft ab.
*
* @return
* possible object is
* {@link PhysicalValueType }
*
*/
public PhysicalValueType getStartValue() {
return startValue;
}
/**
* Legt den Wert der startValue-Eigenschaft fest.
*
* @param value
* allowed object is
* {@link PhysicalValueType }
*
*/
public void setStartValue(PhysicalValueType value) {
this.startValue = value;
}
/**
* Gets the value of the cost property.
*
* <p>
* This accessor method returns a reference to the live list,
* not a snapshot. Therefore any modification you make to the
* returned list will be present inside the JAXB object.
* This is why there is not a <CODE>set</CODE> method for the cost property.
*
* <p>
* For example, to add a new item, do as follows:
* <pre>
* getCost().add(newItem);
* </pre>
*
*
* <p>
* Objects of the following type(s) are allowed in the list
* {@link CostType }
*
*
*/
public List<CostType> getCost() {
if (cost == null) {
cost = new ArrayList<CostType>();
}
return this.cost;
}
}

View File

@@ -0,0 +1,122 @@
/*******************************************************************************
* The MIT License (MIT)
*
* Copyright (c) 2015 - 2019 Dr. Marc Mültin (V2G Clarity)
*
* Permission is hereby granted, free of charge, to any person obtaining a copy
* of this software and associated documentation files (the "Software"), to deal
* in the Software without restriction, including without limitation the rights
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
* copies of the Software, and to permit persons to whom the Software is
* furnished to do so, subject to the following conditions:
*
* The above copyright notice and this permission notice shall be included in
* all copies or substantial portions of the Software.
*
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
* THE SOFTWARE.
*******************************************************************************/
//
// Diese Datei wurde mit der JavaTM Architecture for XML Binding(JAXB) Reference Implementation, v2.2.8-b130911.1802 generiert
// Siehe <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a>
// Änderungen an dieser Datei gehen bei einer Neukompilierung des Quellschemas verloren.
// Generiert: 2014.10.07 um 04:55:05 PM CEST
//
package com.v2gclarity.risev2g.shared.v2gMessages.msgDef;
import javax.xml.bind.annotation.XmlAccessType;
import javax.xml.bind.annotation.XmlAccessorType;
import javax.xml.bind.annotation.XmlAttribute;
import javax.xml.bind.annotation.XmlID;
import javax.xml.bind.annotation.XmlSchemaType;
import javax.xml.bind.annotation.XmlType;
import javax.xml.bind.annotation.XmlValue;
import javax.xml.bind.annotation.adapters.CollapsedStringAdapter;
import javax.xml.bind.annotation.adapters.XmlJavaTypeAdapter;
/**
* <p>Java-Klasse für ContractSignatureEncryptedPrivateKeyType complex type.
*
* <p>Das folgende Schemafragment gibt den erwarteten Content an, der in dieser Klasse enthalten ist.
*
* <pre>
* &lt;complexType name="ContractSignatureEncryptedPrivateKeyType">
* &lt;simpleContent>
* &lt;extension base="&lt;urn:iso:15118:2:2013:MsgDataTypes>privateKeyType">
* &lt;attribute name="Id" use="required" type="{http://www.w3.org/2001/XMLSchema}ID" />
* &lt;/extension>
* &lt;/simpleContent>
* &lt;/complexType>
* </pre>
*
*
*/
@XmlAccessorType(XmlAccessType.FIELD)
@XmlType(name = "ContractSignatureEncryptedPrivateKeyType", propOrder = {
"value"
})
public class ContractSignatureEncryptedPrivateKeyType {
@XmlValue
protected byte[] value;
@XmlAttribute(name = "Id", namespace = "urn:iso:15118:2:2013:MsgDataTypes", required = true)
@XmlJavaTypeAdapter(CollapsedStringAdapter.class)
@XmlID
@XmlSchemaType(name = "ID")
protected String id;
/**
* Ruft den Wert der value-Eigenschaft ab.
*
* @return
* possible object is
* byte[]
*/
public byte[] getValue() {
return value;
}
/**
* Legt den Wert der value-Eigenschaft fest.
*
* @param value
* allowed object is
* byte[]
*/
public void setValue(byte[] value) {
this.value = value;
}
/**
* Ruft den Wert der id-Eigenschaft ab.
*
* @return
* possible object is
* {@link String }
*
*/
public String getId() {
return id;
}
/**
* Legt den Wert der id-Eigenschaft fest.
*
* @param value
* allowed object is
* {@link String }
*
*/
public void setId(String value) {
this.id = value;
}
}

View File

@@ -0,0 +1,84 @@
/*******************************************************************************
* The MIT License (MIT)
*
* Copyright (c) 2015 - 2019 Dr. Marc Mültin (V2G Clarity)
*
* Permission is hereby granted, free of charge, to any person obtaining a copy
* of this software and associated documentation files (the "Software"), to deal
* in the Software without restriction, including without limitation the rights
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
* copies of the Software, and to permit persons to whom the Software is
* furnished to do so, subject to the following conditions:
*
* The above copyright notice and this permission notice shall be included in
* all copies or substantial portions of the Software.
*
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
* THE SOFTWARE.
*******************************************************************************/
//
// Diese Datei wurde mit der JavaTM Architecture for XML Binding(JAXB) Reference Implementation, v2.2.8-b130911.1802 generiert
// Siehe <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a>
// Änderungen an dieser Datei gehen bei einer Neukompilierung des Quellschemas verloren.
// Generiert: 2014.10.07 um 04:55:05 PM CEST
//
package com.v2gclarity.risev2g.shared.v2gMessages.msgDef;
import javax.xml.bind.annotation.XmlEnum;
import javax.xml.bind.annotation.XmlEnumValue;
import javax.xml.bind.annotation.XmlType;
/**
* <p>Java-Klasse für costKindType.
*
* <p>Das folgende Schemafragment gibt den erwarteten Content an, der in dieser Klasse enthalten ist.
* <p>
* <pre>
* &lt;simpleType name="costKindType">
* &lt;restriction base="{http://www.w3.org/2001/XMLSchema}string">
* &lt;enumeration value="relativePricePercentage"/>
* &lt;enumeration value="RenewableGenerationPercentage"/>
* &lt;enumeration value="CarbonDioxideEmission"/>
* &lt;/restriction>
* &lt;/simpleType>
* </pre>
*
*/
@XmlType(name = "costKindType")
@XmlEnum
public enum CostKindType {
@XmlEnumValue("relativePricePercentage")
RELATIVE_PRICE_PERCENTAGE("relativePricePercentage"),
@XmlEnumValue("RenewableGenerationPercentage")
RENEWABLE_GENERATION_PERCENTAGE("RenewableGenerationPercentage"),
@XmlEnumValue("CarbonDioxideEmission")
CARBON_DIOXIDE_EMISSION("CarbonDioxideEmission");
private final String value;
CostKindType(String v) {
value = v;
}
public String value() {
return value;
}
public static CostKindType fromValue(String v) {
for (CostKindType c: CostKindType.values()) {
if (c.value.equals(v)) {
return c;
}
}
throw new IllegalArgumentException(v);
}
}

View File

@@ -0,0 +1,141 @@
/*******************************************************************************
* The MIT License (MIT)
*
* Copyright (c) 2015 - 2019 Dr. Marc Mültin (V2G Clarity)
*
* Permission is hereby granted, free of charge, to any person obtaining a copy
* of this software and associated documentation files (the "Software"), to deal
* in the Software without restriction, including without limitation the rights
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
* copies of the Software, and to permit persons to whom the Software is
* furnished to do so, subject to the following conditions:
*
* The above copyright notice and this permission notice shall be included in
* all copies or substantial portions of the Software.
*
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
* THE SOFTWARE.
*******************************************************************************/
//
// Diese Datei wurde mit der JavaTM Architecture for XML Binding(JAXB) Reference Implementation, v2.2.8-b130911.1802 generiert
// Siehe <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a>
// Änderungen an dieser Datei gehen bei einer Neukompilierung des Quellschemas verloren.
// Generiert: 2014.10.07 um 04:55:05 PM CEST
//
package com.v2gclarity.risev2g.shared.v2gMessages.msgDef;
import javax.xml.bind.annotation.XmlAccessType;
import javax.xml.bind.annotation.XmlAccessorType;
import javax.xml.bind.annotation.XmlElement;
import javax.xml.bind.annotation.XmlSchemaType;
import javax.xml.bind.annotation.XmlType;
/**
* <p>Java-Klasse für CostType complex type.
*
* <p>Das folgende Schemafragment gibt den erwarteten Content an, der in dieser Klasse enthalten ist.
*
* <pre>
* &lt;complexType name="CostType">
* &lt;complexContent>
* &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
* &lt;sequence>
* &lt;element name="costKind" type="{urn:iso:15118:2:2013:MsgDataTypes}costKindType"/>
* &lt;element name="amount" type="{http://www.w3.org/2001/XMLSchema}unsignedInt"/>
* &lt;element name="amountMultiplier" type="{urn:iso:15118:2:2013:MsgDataTypes}unitMultiplierType" minOccurs="0"/>
* &lt;/sequence>
* &lt;/restriction>
* &lt;/complexContent>
* &lt;/complexType>
* </pre>
*
*
*/
@XmlAccessorType(XmlAccessType.FIELD)
@XmlType(name = "CostType", propOrder = {
"costKind",
"amount",
"amountMultiplier"
})
public class CostType {
@XmlElement(required = true)
@XmlSchemaType(name = "string")
protected CostKindType costKind;
@XmlSchemaType(name = "unsignedInt")
protected long amount;
protected Byte amountMultiplier;
/**
* Ruft den Wert der costKind-Eigenschaft ab.
*
* @return
* possible object is
* {@link CostKindType }
*
*/
public CostKindType getCostKind() {
return costKind;
}
/**
* Legt den Wert der costKind-Eigenschaft fest.
*
* @param value
* allowed object is
* {@link CostKindType }
*
*/
public void setCostKind(CostKindType value) {
this.costKind = value;
}
/**
* Ruft den Wert der amount-Eigenschaft ab.
*
*/
public long getAmount() {
return amount;
}
/**
* Legt den Wert der amount-Eigenschaft fest.
*
*/
public void setAmount(long value) {
this.amount = value;
}
/**
* Ruft den Wert der amountMultiplier-Eigenschaft ab.
*
* @return
* possible object is
* {@link Byte }
*
*/
public Byte getAmountMultiplier() {
return amountMultiplier;
}
/**
* Legt den Wert der amountMultiplier-Eigenschaft fest.
*
* @param value
* allowed object is
* {@link Byte }
*
*/
public void setAmountMultiplier(Byte value) {
this.amountMultiplier = value;
}
}

View File

@@ -0,0 +1,338 @@
/*******************************************************************************
* The MIT License (MIT)
*
* Copyright (c) 2015 - 2019 Dr. Marc Mültin (V2G Clarity)
*
* Permission is hereby granted, free of charge, to any person obtaining a copy
* of this software and associated documentation files (the "Software"), to deal
* in the Software without restriction, including without limitation the rights
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
* copies of the Software, and to permit persons to whom the Software is
* furnished to do so, subject to the following conditions:
*
* The above copyright notice and this permission notice shall be included in
* all copies or substantial portions of the Software.
*
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
* THE SOFTWARE.
*******************************************************************************/
//
// Diese Datei wurde mit der JavaTM Architecture for XML Binding(JAXB) Reference Implementation, v2.2.8-b130911.1802 generiert
// Siehe <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a>
// Änderungen an dieser Datei gehen bei einer Neukompilierung des Quellschemas verloren.
// Generiert: 2014.10.07 um 04:55:05 PM CEST
//
package com.v2gclarity.risev2g.shared.v2gMessages.msgDef;
import javax.xml.bind.annotation.XmlAccessType;
import javax.xml.bind.annotation.XmlAccessorType;
import javax.xml.bind.annotation.XmlElement;
import javax.xml.bind.annotation.XmlType;
/**
* <p>Java-Klasse für CurrentDemandReqType complex type.
*
* <p>Das folgende Schemafragment gibt den erwarteten Content an, der in dieser Klasse enthalten ist.
*
* <pre>
* &lt;complexType name="CurrentDemandReqType">
* &lt;complexContent>
* &lt;extension base="{urn:iso:15118:2:2013:MsgBody}BodyBaseType">
* &lt;sequence>
* &lt;element name="DC_EVStatus" type="{urn:iso:15118:2:2013:MsgDataTypes}DC_EVStatusType"/>
* &lt;element name="EVTargetCurrent" type="{urn:iso:15118:2:2013:MsgDataTypes}PhysicalValueType"/>
* &lt;element name="EVMaximumVoltageLimit" type="{urn:iso:15118:2:2013:MsgDataTypes}PhysicalValueType" minOccurs="0"/>
* &lt;element name="EVMaximumCurrentLimit" type="{urn:iso:15118:2:2013:MsgDataTypes}PhysicalValueType" minOccurs="0"/>
* &lt;element name="EVMaximumPowerLimit" type="{urn:iso:15118:2:2013:MsgDataTypes}PhysicalValueType" minOccurs="0"/>
* &lt;element name="BulkChargingComplete" type="{http://www.w3.org/2001/XMLSchema}boolean" minOccurs="0"/>
* &lt;element name="ChargingComplete" type="{http://www.w3.org/2001/XMLSchema}boolean"/>
* &lt;element name="RemainingTimeToFullSoC" type="{urn:iso:15118:2:2013:MsgDataTypes}PhysicalValueType" minOccurs="0"/>
* &lt;element name="RemainingTimeToBulkSoC" type="{urn:iso:15118:2:2013:MsgDataTypes}PhysicalValueType" minOccurs="0"/>
* &lt;element name="EVTargetVoltage" type="{urn:iso:15118:2:2013:MsgDataTypes}PhysicalValueType"/>
* &lt;/sequence>
* &lt;/extension>
* &lt;/complexContent>
* &lt;/complexType>
* </pre>
*
*
*/
@XmlAccessorType(XmlAccessType.FIELD)
@XmlType(name = "CurrentDemandReqType", namespace = "urn:iso:15118:2:2013:MsgBody", propOrder = {
"dcevStatus",
"evTargetCurrent",
"evMaximumVoltageLimit",
"evMaximumCurrentLimit",
"evMaximumPowerLimit",
"bulkChargingComplete",
"chargingComplete",
"remainingTimeToFullSoC",
"remainingTimeToBulkSoC",
"evTargetVoltage"
})
public class CurrentDemandReqType
extends BodyBaseType
{
@XmlElement(name = "DC_EVStatus", required = true)
protected DCEVStatusType dcevStatus;
@XmlElement(name = "EVTargetCurrent", required = true)
protected PhysicalValueType evTargetCurrent;
@XmlElement(name = "EVMaximumVoltageLimit")
protected PhysicalValueType evMaximumVoltageLimit;
@XmlElement(name = "EVMaximumCurrentLimit")
protected PhysicalValueType evMaximumCurrentLimit;
@XmlElement(name = "EVMaximumPowerLimit")
protected PhysicalValueType evMaximumPowerLimit;
@XmlElement(name = "BulkChargingComplete")
protected Boolean bulkChargingComplete;
@XmlElement(name = "ChargingComplete")
protected boolean chargingComplete;
@XmlElement(name = "RemainingTimeToFullSoC")
protected PhysicalValueType remainingTimeToFullSoC;
@XmlElement(name = "RemainingTimeToBulkSoC")
protected PhysicalValueType remainingTimeToBulkSoC;
@XmlElement(name = "EVTargetVoltage", required = true)
protected PhysicalValueType evTargetVoltage;
/**
* Ruft den Wert der dcevStatus-Eigenschaft ab.
*
* @return
* possible object is
* {@link DCEVStatusType }
*
*/
public DCEVStatusType getDCEVStatus() {
return dcevStatus;
}
/**
* Legt den Wert der dcevStatus-Eigenschaft fest.
*
* @param value
* allowed object is
* {@link DCEVStatusType }
*
*/
public void setDCEVStatus(DCEVStatusType value) {
this.dcevStatus = value;
}
/**
* Ruft den Wert der evTargetCurrent-Eigenschaft ab.
*
* @return
* possible object is
* {@link PhysicalValueType }
*
*/
public PhysicalValueType getEVTargetCurrent() {
return evTargetCurrent;
}
/**
* Legt den Wert der evTargetCurrent-Eigenschaft fest.
*
* @param value
* allowed object is
* {@link PhysicalValueType }
*
*/
public void setEVTargetCurrent(PhysicalValueType value) {
this.evTargetCurrent = value;
}
/**
* Ruft den Wert der evMaximumVoltageLimit-Eigenschaft ab.
*
* @return
* possible object is
* {@link PhysicalValueType }
*
*/
public PhysicalValueType getEVMaximumVoltageLimit() {
return evMaximumVoltageLimit;
}
/**
* Legt den Wert der evMaximumVoltageLimit-Eigenschaft fest.
*
* @param value
* allowed object is
* {@link PhysicalValueType }
*
*/
public void setEVMaximumVoltageLimit(PhysicalValueType value) {
this.evMaximumVoltageLimit = value;
}
/**
* Ruft den Wert der evMaximumCurrentLimit-Eigenschaft ab.
*
* @return
* possible object is
* {@link PhysicalValueType }
*
*/
public PhysicalValueType getEVMaximumCurrentLimit() {
return evMaximumCurrentLimit;
}
/**
* Legt den Wert der evMaximumCurrentLimit-Eigenschaft fest.
*
* @param value
* allowed object is
* {@link PhysicalValueType }
*
*/
public void setEVMaximumCurrentLimit(PhysicalValueType value) {
this.evMaximumCurrentLimit = value;
}
/**
* Ruft den Wert der evMaximumPowerLimit-Eigenschaft ab.
*
* @return
* possible object is
* {@link PhysicalValueType }
*
*/
public PhysicalValueType getEVMaximumPowerLimit() {
return evMaximumPowerLimit;
}
/**
* Legt den Wert der evMaximumPowerLimit-Eigenschaft fest.
*
* @param value
* allowed object is
* {@link PhysicalValueType }
*
*/
public void setEVMaximumPowerLimit(PhysicalValueType value) {
this.evMaximumPowerLimit = value;
}
/**
* Ruft den Wert der bulkChargingComplete-Eigenschaft ab.
*
* @return
* possible object is
* {@link Boolean }
*
*/
public Boolean isBulkChargingComplete() {
return bulkChargingComplete;
}
/**
* Legt den Wert der bulkChargingComplete-Eigenschaft fest.
*
* @param value
* allowed object is
* {@link Boolean }
*
*/
public void setBulkChargingComplete(Boolean value) {
this.bulkChargingComplete = value;
}
/**
* Ruft den Wert der chargingComplete-Eigenschaft ab.
*
*/
public boolean isChargingComplete() {
return chargingComplete;
}
/**
* Legt den Wert der chargingComplete-Eigenschaft fest.
*
*/
public void setChargingComplete(boolean value) {
this.chargingComplete = value;
}
/**
* Ruft den Wert der remainingTimeToFullSoC-Eigenschaft ab.
*
* @return
* possible object is
* {@link PhysicalValueType }
*
*/
public PhysicalValueType getRemainingTimeToFullSoC() {
return remainingTimeToFullSoC;
}
/**
* Legt den Wert der remainingTimeToFullSoC-Eigenschaft fest.
*
* @param value
* allowed object is
* {@link PhysicalValueType }
*
*/
public void setRemainingTimeToFullSoC(PhysicalValueType value) {
this.remainingTimeToFullSoC = value;
}
/**
* Ruft den Wert der remainingTimeToBulkSoC-Eigenschaft ab.
*
* @return
* possible object is
* {@link PhysicalValueType }
*
*/
public PhysicalValueType getRemainingTimeToBulkSoC() {
return remainingTimeToBulkSoC;
}
/**
* Legt den Wert der remainingTimeToBulkSoC-Eigenschaft fest.
*
* @param value
* allowed object is
* {@link PhysicalValueType }
*
*/
public void setRemainingTimeToBulkSoC(PhysicalValueType value) {
this.remainingTimeToBulkSoC = value;
}
/**
* Ruft den Wert der evTargetVoltage-Eigenschaft ab.
*
* @return
* possible object is
* {@link PhysicalValueType }
*
*/
public PhysicalValueType getEVTargetVoltage() {
return evTargetVoltage;
}
/**
* Legt den Wert der evTargetVoltage-Eigenschaft fest.
*
* @param value
* allowed object is
* {@link PhysicalValueType }
*
*/
public void setEVTargetVoltage(PhysicalValueType value) {
this.evTargetVoltage = value;
}
}

View File

@@ -0,0 +1,429 @@
/*******************************************************************************
* The MIT License (MIT)
*
* Copyright (c) 2015 - 2019 Dr. Marc Mültin (V2G Clarity)
*
* Permission is hereby granted, free of charge, to any person obtaining a copy
* of this software and associated documentation files (the "Software"), to deal
* in the Software without restriction, including without limitation the rights
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
* copies of the Software, and to permit persons to whom the Software is
* furnished to do so, subject to the following conditions:
*
* The above copyright notice and this permission notice shall be included in
* all copies or substantial portions of the Software.
*
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
* THE SOFTWARE.
*******************************************************************************/
//
// Diese Datei wurde mit der JavaTM Architecture for XML Binding(JAXB) Reference Implementation, v2.2.8-b130911.1802 generiert
// Siehe <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a>
// Änderungen an dieser Datei gehen bei einer Neukompilierung des Quellschemas verloren.
// Generiert: 2014.10.07 um 04:55:05 PM CEST
//
package com.v2gclarity.risev2g.shared.v2gMessages.msgDef;
import javax.xml.bind.annotation.XmlAccessType;
import javax.xml.bind.annotation.XmlAccessorType;
import javax.xml.bind.annotation.XmlElement;
import javax.xml.bind.annotation.XmlSchemaType;
import javax.xml.bind.annotation.XmlType;
/**
* <p>Java-Klasse für CurrentDemandResType complex type.
*
* <p>Das folgende Schemafragment gibt den erwarteten Content an, der in dieser Klasse enthalten ist.
*
* <pre>
* &lt;complexType name="CurrentDemandResType">
* &lt;complexContent>
* &lt;extension base="{urn:iso:15118:2:2013:MsgBody}BodyBaseType">
* &lt;sequence>
* &lt;element name="ResponseCode" type="{urn:iso:15118:2:2013:MsgDataTypes}responseCodeType"/>
* &lt;element name="DC_EVSEStatus" type="{urn:iso:15118:2:2013:MsgDataTypes}DC_EVSEStatusType"/>
* &lt;element name="EVSEPresentVoltage" type="{urn:iso:15118:2:2013:MsgDataTypes}PhysicalValueType"/>
* &lt;element name="EVSEPresentCurrent" type="{urn:iso:15118:2:2013:MsgDataTypes}PhysicalValueType"/>
* &lt;element name="EVSECurrentLimitAchieved" type="{http://www.w3.org/2001/XMLSchema}boolean"/>
* &lt;element name="EVSEVoltageLimitAchieved" type="{http://www.w3.org/2001/XMLSchema}boolean"/>
* &lt;element name="EVSEPowerLimitAchieved" type="{http://www.w3.org/2001/XMLSchema}boolean"/>
* &lt;element name="EVSEMaximumVoltageLimit" type="{urn:iso:15118:2:2013:MsgDataTypes}PhysicalValueType" minOccurs="0"/>
* &lt;element name="EVSEMaximumCurrentLimit" type="{urn:iso:15118:2:2013:MsgDataTypes}PhysicalValueType" minOccurs="0"/>
* &lt;element name="EVSEMaximumPowerLimit" type="{urn:iso:15118:2:2013:MsgDataTypes}PhysicalValueType" minOccurs="0"/>
* &lt;element name="EVSEID" type="{urn:iso:15118:2:2013:MsgDataTypes}evseIDType"/>
* &lt;element name="SAScheduleTupleID" type="{urn:iso:15118:2:2013:MsgDataTypes}SAIDType"/>
* &lt;element name="MeterInfo" type="{urn:iso:15118:2:2013:MsgDataTypes}MeterInfoType" minOccurs="0"/>
* &lt;element name="ReceiptRequired" type="{http://www.w3.org/2001/XMLSchema}boolean" minOccurs="0"/>
* &lt;/sequence>
* &lt;/extension>
* &lt;/complexContent>
* &lt;/complexType>
* </pre>
*
*
*/
@XmlAccessorType(XmlAccessType.FIELD)
@XmlType(name = "CurrentDemandResType", namespace = "urn:iso:15118:2:2013:MsgBody", propOrder = {
"responseCode",
"dcevseStatus",
"evsePresentVoltage",
"evsePresentCurrent",
"evseCurrentLimitAchieved",
"evseVoltageLimitAchieved",
"evsePowerLimitAchieved",
"evseMaximumVoltageLimit",
"evseMaximumCurrentLimit",
"evseMaximumPowerLimit",
"evseid",
"saScheduleTupleID",
"meterInfo",
"receiptRequired"
})
public class CurrentDemandResType
extends BodyBaseType
{
@XmlElement(name = "ResponseCode", required = true)
@XmlSchemaType(name = "string")
protected ResponseCodeType responseCode;
@XmlElement(name = "DC_EVSEStatus", required = true)
protected DCEVSEStatusType dcevseStatus;
@XmlElement(name = "EVSEPresentVoltage", required = true)
protected PhysicalValueType evsePresentVoltage;
@XmlElement(name = "EVSEPresentCurrent", required = true)
protected PhysicalValueType evsePresentCurrent;
@XmlElement(name = "EVSECurrentLimitAchieved")
protected boolean evseCurrentLimitAchieved;
@XmlElement(name = "EVSEVoltageLimitAchieved")
protected boolean evseVoltageLimitAchieved;
@XmlElement(name = "EVSEPowerLimitAchieved")
protected boolean evsePowerLimitAchieved;
@XmlElement(name = "EVSEMaximumVoltageLimit")
protected PhysicalValueType evseMaximumVoltageLimit;
@XmlElement(name = "EVSEMaximumCurrentLimit")
protected PhysicalValueType evseMaximumCurrentLimit;
@XmlElement(name = "EVSEMaximumPowerLimit")
protected PhysicalValueType evseMaximumPowerLimit;
@XmlElement(name = "EVSEID", required = true)
protected String evseid;
@XmlElement(name = "SAScheduleTupleID")
@XmlSchemaType(name = "unsignedByte")
protected short saScheduleTupleID;
@XmlElement(name = "MeterInfo")
protected MeterInfoType meterInfo;
@XmlElement(name = "ReceiptRequired")
protected Boolean receiptRequired;
/**
* Ruft den Wert der responseCode-Eigenschaft ab.
*
* @return
* possible object is
* {@link ResponseCodeType }
*
*/
public ResponseCodeType getResponseCode() {
return responseCode;
}
/**
* Legt den Wert der responseCode-Eigenschaft fest.
*
* @param value
* allowed object is
* {@link ResponseCodeType }
*
*/
public void setResponseCode(ResponseCodeType value) {
this.responseCode = value;
}
/**
* Ruft den Wert der dcevseStatus-Eigenschaft ab.
*
* @return
* possible object is
* {@link DCEVSEStatusType }
*
*/
public DCEVSEStatusType getDCEVSEStatus() {
return dcevseStatus;
}
/**
* Legt den Wert der dcevseStatus-Eigenschaft fest.
*
* @param value
* allowed object is
* {@link DCEVSEStatusType }
*
*/
public void setDCEVSEStatus(DCEVSEStatusType value) {
this.dcevseStatus = value;
}
/**
* Ruft den Wert der evsePresentVoltage-Eigenschaft ab.
*
* @return
* possible object is
* {@link PhysicalValueType }
*
*/
public PhysicalValueType getEVSEPresentVoltage() {
return evsePresentVoltage;
}
/**
* Legt den Wert der evsePresentVoltage-Eigenschaft fest.
*
* @param value
* allowed object is
* {@link PhysicalValueType }
*
*/
public void setEVSEPresentVoltage(PhysicalValueType value) {
this.evsePresentVoltage = value;
}
/**
* Ruft den Wert der evsePresentCurrent-Eigenschaft ab.
*
* @return
* possible object is
* {@link PhysicalValueType }
*
*/
public PhysicalValueType getEVSEPresentCurrent() {
return evsePresentCurrent;
}
/**
* Legt den Wert der evsePresentCurrent-Eigenschaft fest.
*
* @param value
* allowed object is
* {@link PhysicalValueType }
*
*/
public void setEVSEPresentCurrent(PhysicalValueType value) {
this.evsePresentCurrent = value;
}
/**
* Ruft den Wert der evseCurrentLimitAchieved-Eigenschaft ab.
*
*/
public boolean isEVSECurrentLimitAchieved() {
return evseCurrentLimitAchieved;
}
/**
* Legt den Wert der evseCurrentLimitAchieved-Eigenschaft fest.
*
*/
public void setEVSECurrentLimitAchieved(boolean value) {
this.evseCurrentLimitAchieved = value;
}
/**
* Ruft den Wert der evseVoltageLimitAchieved-Eigenschaft ab.
*
*/
public boolean isEVSEVoltageLimitAchieved() {
return evseVoltageLimitAchieved;
}
/**
* Legt den Wert der evseVoltageLimitAchieved-Eigenschaft fest.
*
*/
public void setEVSEVoltageLimitAchieved(boolean value) {
this.evseVoltageLimitAchieved = value;
}
/**
* Ruft den Wert der evsePowerLimitAchieved-Eigenschaft ab.
*
*/
public boolean isEVSEPowerLimitAchieved() {
return evsePowerLimitAchieved;
}
/**
* Legt den Wert der evsePowerLimitAchieved-Eigenschaft fest.
*
*/
public void setEVSEPowerLimitAchieved(boolean value) {
this.evsePowerLimitAchieved = value;
}
/**
* Ruft den Wert der evseMaximumVoltageLimit-Eigenschaft ab.
*
* @return
* possible object is
* {@link PhysicalValueType }
*
*/
public PhysicalValueType getEVSEMaximumVoltageLimit() {
return evseMaximumVoltageLimit;
}
/**
* Legt den Wert der evseMaximumVoltageLimit-Eigenschaft fest.
*
* @param value
* allowed object is
* {@link PhysicalValueType }
*
*/
public void setEVSEMaximumVoltageLimit(PhysicalValueType value) {
this.evseMaximumVoltageLimit = value;
}
/**
* Ruft den Wert der evseMaximumCurrentLimit-Eigenschaft ab.
*
* @return
* possible object is
* {@link PhysicalValueType }
*
*/
public PhysicalValueType getEVSEMaximumCurrentLimit() {
return evseMaximumCurrentLimit;
}
/**
* Legt den Wert der evseMaximumCurrentLimit-Eigenschaft fest.
*
* @param value
* allowed object is
* {@link PhysicalValueType }
*
*/
public void setEVSEMaximumCurrentLimit(PhysicalValueType value) {
this.evseMaximumCurrentLimit = value;
}
/**
* Ruft den Wert der evseMaximumPowerLimit-Eigenschaft ab.
*
* @return
* possible object is
* {@link PhysicalValueType }
*
*/
public PhysicalValueType getEVSEMaximumPowerLimit() {
return evseMaximumPowerLimit;
}
/**
* Legt den Wert der evseMaximumPowerLimit-Eigenschaft fest.
*
* @param value
* allowed object is
* {@link PhysicalValueType }
*
*/
public void setEVSEMaximumPowerLimit(PhysicalValueType value) {
this.evseMaximumPowerLimit = value;
}
/**
* Ruft den Wert der evseid-Eigenschaft ab.
*
* @return
* possible object is
* {@link String }
*
*/
public String getEVSEID() {
return evseid;
}
/**
* Legt den Wert der evseid-Eigenschaft fest.
*
* @param value
* allowed object is
* {@link String }
*
*/
public void setEVSEID(String value) {
this.evseid = value;
}
/**
* Ruft den Wert der saScheduleTupleID-Eigenschaft ab.
*
*/
public short getSAScheduleTupleID() {
return saScheduleTupleID;
}
/**
* Legt den Wert der saScheduleTupleID-Eigenschaft fest.
*
*/
public void setSAScheduleTupleID(short value) {
this.saScheduleTupleID = value;
}
/**
* Ruft den Wert der meterInfo-Eigenschaft ab.
*
* @return
* possible object is
* {@link MeterInfoType }
*
*/
public MeterInfoType getMeterInfo() {
return meterInfo;
}
/**
* Legt den Wert der meterInfo-Eigenschaft fest.
*
* @param value
* allowed object is
* {@link MeterInfoType }
*
*/
public void setMeterInfo(MeterInfoType value) {
this.meterInfo = value;
}
/**
* Ruft den Wert der receiptRequired-Eigenschaft ab.
*
* @return
* possible object is
* {@link Boolean }
*
*/
public Boolean isReceiptRequired() {
return receiptRequired;
}
/**
* Legt den Wert der receiptRequired-Eigenschaft fest.
*
* @param value
* allowed object is
* {@link Boolean }
*
*/
public void setReceiptRequired(Boolean value) {
this.receiptRequired = value;
}
}

View File

@@ -0,0 +1,290 @@
/*******************************************************************************
* The MIT License (MIT)
*
* Copyright (c) 2015 - 2019 Dr. Marc Mültin (V2G Clarity)
*
* Permission is hereby granted, free of charge, to any person obtaining a copy
* of this software and associated documentation files (the "Software"), to deal
* in the Software without restriction, including without limitation the rights
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
* copies of the Software, and to permit persons to whom the Software is
* furnished to do so, subject to the following conditions:
*
* The above copyright notice and this permission notice shall be included in
* all copies or substantial portions of the Software.
*
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
* THE SOFTWARE.
*******************************************************************************/
//
// Diese Datei wurde mit der JavaTM Architecture for XML Binding(JAXB) Reference Implementation, v2.2.8-b130911.1802 generiert
// Siehe <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a>
// Änderungen an dieser Datei gehen bei einer Neukompilierung des Quellschemas verloren.
// Generiert: 2014.10.07 um 04:55:05 PM CEST
//
package com.v2gclarity.risev2g.shared.v2gMessages.msgDef;
import javax.xml.bind.annotation.XmlAccessType;
import javax.xml.bind.annotation.XmlAccessorType;
import javax.xml.bind.annotation.XmlElement;
import javax.xml.bind.annotation.XmlType;
/**
* <p>Java-Klasse für DC_EVChargeParameterType complex type.
*
* <p>Das folgende Schemafragment gibt den erwarteten Content an, der in dieser Klasse enthalten ist.
*
* <pre>
* &lt;complexType name="DC_EVChargeParameterType">
* &lt;complexContent>
* &lt;extension base="{urn:iso:15118:2:2013:MsgDataTypes}EVChargeParameterType">
* &lt;sequence>
* &lt;element name="DC_EVStatus" type="{urn:iso:15118:2:2013:MsgDataTypes}DC_EVStatusType"/>
* &lt;element name="EVMaximumCurrentLimit" type="{urn:iso:15118:2:2013:MsgDataTypes}PhysicalValueType"/>
* &lt;element name="EVMaximumPowerLimit" type="{urn:iso:15118:2:2013:MsgDataTypes}PhysicalValueType" minOccurs="0"/>
* &lt;element name="EVMaximumVoltageLimit" type="{urn:iso:15118:2:2013:MsgDataTypes}PhysicalValueType"/>
* &lt;element name="EVEnergyCapacity" type="{urn:iso:15118:2:2013:MsgDataTypes}PhysicalValueType" minOccurs="0"/>
* &lt;element name="EVEnergyRequest" type="{urn:iso:15118:2:2013:MsgDataTypes}PhysicalValueType" minOccurs="0"/>
* &lt;element name="FullSOC" type="{urn:iso:15118:2:2013:MsgDataTypes}percentValueType" minOccurs="0"/>
* &lt;element name="BulkSOC" type="{urn:iso:15118:2:2013:MsgDataTypes}percentValueType" minOccurs="0"/>
* &lt;/sequence>
* &lt;/extension>
* &lt;/complexContent>
* &lt;/complexType>
* </pre>
*
*
*/
@XmlAccessorType(XmlAccessType.FIELD)
@XmlType(name = "DC_EVChargeParameterType", propOrder = {
"dcevStatus",
"evMaximumCurrentLimit",
"evMaximumPowerLimit",
"evMaximumVoltageLimit",
"evEnergyCapacity",
"evEnergyRequest",
"fullSOC",
"bulkSOC"
})
public class DCEVChargeParameterType
extends EVChargeParameterType
{
@XmlElement(name = "DC_EVStatus", required = true)
protected DCEVStatusType dcevStatus;
@XmlElement(name = "EVMaximumCurrentLimit", required = true)
protected PhysicalValueType evMaximumCurrentLimit;
@XmlElement(name = "EVMaximumPowerLimit")
protected PhysicalValueType evMaximumPowerLimit;
@XmlElement(name = "EVMaximumVoltageLimit", required = true)
protected PhysicalValueType evMaximumVoltageLimit;
@XmlElement(name = "EVEnergyCapacity")
protected PhysicalValueType evEnergyCapacity;
@XmlElement(name = "EVEnergyRequest")
protected PhysicalValueType evEnergyRequest;
@XmlElement(name = "FullSOC")
protected Byte fullSOC;
@XmlElement(name = "BulkSOC")
protected Byte bulkSOC;
/**
* Ruft den Wert der dcevStatus-Eigenschaft ab.
*
* @return
* possible object is
* {@link DCEVStatusType }
*
*/
public DCEVStatusType getDCEVStatus() {
return dcevStatus;
}
/**
* Legt den Wert der dcevStatus-Eigenschaft fest.
*
* @param value
* allowed object is
* {@link DCEVStatusType }
*
*/
public void setDCEVStatus(DCEVStatusType value) {
this.dcevStatus = value;
}
/**
* Ruft den Wert der evMaximumCurrentLimit-Eigenschaft ab.
*
* @return
* possible object is
* {@link PhysicalValueType }
*
*/
public PhysicalValueType getEVMaximumCurrentLimit() {
return evMaximumCurrentLimit;
}
/**
* Legt den Wert der evMaximumCurrentLimit-Eigenschaft fest.
*
* @param value
* allowed object is
* {@link PhysicalValueType }
*
*/
public void setEVMaximumCurrentLimit(PhysicalValueType value) {
this.evMaximumCurrentLimit = value;
}
/**
* Ruft den Wert der evMaximumPowerLimit-Eigenschaft ab.
*
* @return
* possible object is
* {@link PhysicalValueType }
*
*/
public PhysicalValueType getEVMaximumPowerLimit() {
return evMaximumPowerLimit;
}
/**
* Legt den Wert der evMaximumPowerLimit-Eigenschaft fest.
*
* @param value
* allowed object is
* {@link PhysicalValueType }
*
*/
public void setEVMaximumPowerLimit(PhysicalValueType value) {
this.evMaximumPowerLimit = value;
}
/**
* Ruft den Wert der evMaximumVoltageLimit-Eigenschaft ab.
*
* @return
* possible object is
* {@link PhysicalValueType }
*
*/
public PhysicalValueType getEVMaximumVoltageLimit() {
return evMaximumVoltageLimit;
}
/**
* Legt den Wert der evMaximumVoltageLimit-Eigenschaft fest.
*
* @param value
* allowed object is
* {@link PhysicalValueType }
*
*/
public void setEVMaximumVoltageLimit(PhysicalValueType value) {
this.evMaximumVoltageLimit = value;
}
/**
* Ruft den Wert der evEnergyCapacity-Eigenschaft ab.
*
* @return
* possible object is
* {@link PhysicalValueType }
*
*/
public PhysicalValueType getEVEnergyCapacity() {
return evEnergyCapacity;
}
/**
* Legt den Wert der evEnergyCapacity-Eigenschaft fest.
*
* @param value
* allowed object is
* {@link PhysicalValueType }
*
*/
public void setEVEnergyCapacity(PhysicalValueType value) {
this.evEnergyCapacity = value;
}
/**
* Ruft den Wert der evEnergyRequest-Eigenschaft ab.
*
* @return
* possible object is
* {@link PhysicalValueType }
*
*/
public PhysicalValueType getEVEnergyRequest() {
return evEnergyRequest;
}
/**
* Legt den Wert der evEnergyRequest-Eigenschaft fest.
*
* @param value
* allowed object is
* {@link PhysicalValueType }
*
*/
public void setEVEnergyRequest(PhysicalValueType value) {
this.evEnergyRequest = value;
}
/**
* Ruft den Wert der fullSOC-Eigenschaft ab.
*
* @return
* possible object is
* {@link Byte }
*
*/
public Byte getFullSOC() {
return fullSOC;
}
/**
* Legt den Wert der fullSOC-Eigenschaft fest.
*
* @param value
* allowed object is
* {@link Byte }
*
*/
public void setFullSOC(Byte value) {
this.fullSOC = value;
}
/**
* Ruft den Wert der bulkSOC-Eigenschaft ab.
*
* @return
* possible object is
* {@link Byte }
*
*/
public Byte getBulkSOC() {
return bulkSOC;
}
/**
* Legt den Wert der bulkSOC-Eigenschaft fest.
*
* @param value
* allowed object is
* {@link Byte }
*
*/
public void setBulkSOC(Byte value) {
this.bulkSOC = value;
}
}

View File

@@ -0,0 +1,110 @@
/*******************************************************************************
* The MIT License (MIT)
*
* Copyright (c) 2015 - 2019 Dr. Marc Mültin (V2G Clarity)
*
* Permission is hereby granted, free of charge, to any person obtaining a copy
* of this software and associated documentation files (the "Software"), to deal
* in the Software without restriction, including without limitation the rights
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
* copies of the Software, and to permit persons to whom the Software is
* furnished to do so, subject to the following conditions:
*
* The above copyright notice and this permission notice shall be included in
* all copies or substantial portions of the Software.
*
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
* THE SOFTWARE.
*******************************************************************************/
//
// Diese Datei wurde mit der JavaTM Architecture for XML Binding(JAXB) Reference Implementation, v2.2.8-b130911.1802 generiert
// Siehe <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a>
// Änderungen an dieser Datei gehen bei einer Neukompilierung des Quellschemas verloren.
// Generiert: 2014.10.07 um 04:55:05 PM CEST
//
package com.v2gclarity.risev2g.shared.v2gMessages.msgDef;
import javax.xml.bind.annotation.XmlEnum;
import javax.xml.bind.annotation.XmlEnumValue;
import javax.xml.bind.annotation.XmlType;
/**
* <p>Java-Klasse für DC_EVErrorCodeType.
*
* <p>Das folgende Schemafragment gibt den erwarteten Content an, der in dieser Klasse enthalten ist.
* <p>
* <pre>
* &lt;simpleType name="DC_EVErrorCodeType">
* &lt;restriction base="{http://www.w3.org/2001/XMLSchema}string">
* &lt;enumeration value="NO_ERROR"/>
* &lt;enumeration value="FAILED_RESSTemperatureInhibit"/>
* &lt;enumeration value="FAILED_EVShiftPosition"/>
* &lt;enumeration value="FAILED_ChargerConnectorLockFault"/>
* &lt;enumeration value="FAILED_EVRESSMalfunction"/>
* &lt;enumeration value="FAILED_ChargingCurrentdifferential"/>
* &lt;enumeration value="FAILED_ChargingVoltageOutOfRange"/>
* &lt;enumeration value="Reserved_A"/>
* &lt;enumeration value="Reserved_B"/>
* &lt;enumeration value="Reserved_C"/>
* &lt;enumeration value="FAILED_ChargingSystemIncompatibility"/>
* &lt;enumeration value="NoData"/>
* &lt;/restriction>
* &lt;/simpleType>
* </pre>
*
*/
@XmlType(name = "DC_EVErrorCodeType")
@XmlEnum
public enum DCEVErrorCodeType {
NO_ERROR("NO_ERROR"),
@XmlEnumValue("FAILED_RESSTemperatureInhibit")
FAILED_RESS_TEMPERATURE_INHIBIT("FAILED_RESSTemperatureInhibit"),
@XmlEnumValue("FAILED_EVShiftPosition")
FAILED_EV_SHIFT_POSITION("FAILED_EVShiftPosition"),
@XmlEnumValue("FAILED_ChargerConnectorLockFault")
FAILED_CHARGER_CONNECTOR_LOCK_FAULT("FAILED_ChargerConnectorLockFault"),
@XmlEnumValue("FAILED_EVRESSMalfunction")
FAILED_EVRESS_MALFUNCTION("FAILED_EVRESSMalfunction"),
@XmlEnumValue("FAILED_ChargingCurrentdifferential")
FAILED_CHARGING_CURRENTDIFFERENTIAL("FAILED_ChargingCurrentdifferential"),
@XmlEnumValue("FAILED_ChargingVoltageOutOfRange")
FAILED_CHARGING_VOLTAGE_OUT_OF_RANGE("FAILED_ChargingVoltageOutOfRange"),
@XmlEnumValue("Reserved_A")
RESERVED_A("Reserved_A"),
@XmlEnumValue("Reserved_B")
RESERVED_B("Reserved_B"),
@XmlEnumValue("Reserved_C")
RESERVED_C("Reserved_C"),
@XmlEnumValue("FAILED_ChargingSystemIncompatibility")
FAILED_CHARGING_SYSTEM_INCOMPATIBILITY("FAILED_ChargingSystemIncompatibility"),
@XmlEnumValue("NoData")
NO_DATA("NoData");
private final String value;
DCEVErrorCodeType(String v) {
value = v;
}
public String value() {
return value;
}
public static DCEVErrorCodeType fromValue(String v) {
for (DCEVErrorCodeType c: DCEVErrorCodeType.values()) {
if (c.value.equals(v)) {
return c;
}
}
throw new IllegalArgumentException(v);
}
}

View File

@@ -0,0 +1,142 @@
/*******************************************************************************
* The MIT License (MIT)
*
* Copyright (c) 2015 - 2019 Dr. Marc Mültin (V2G Clarity)
*
* Permission is hereby granted, free of charge, to any person obtaining a copy
* of this software and associated documentation files (the "Software"), to deal
* in the Software without restriction, including without limitation the rights
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
* copies of the Software, and to permit persons to whom the Software is
* furnished to do so, subject to the following conditions:
*
* The above copyright notice and this permission notice shall be included in
* all copies or substantial portions of the Software.
*
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
* THE SOFTWARE.
*******************************************************************************/
//
// Diese Datei wurde mit der JavaTM Architecture for XML Binding(JAXB) Reference Implementation, v2.2.8-b130911.1802 generiert
// Siehe <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a>
// Änderungen an dieser Datei gehen bei einer Neukompilierung des Quellschemas verloren.
// Generiert: 2014.10.07 um 04:55:05 PM CEST
//
package com.v2gclarity.risev2g.shared.v2gMessages.msgDef;
import javax.xml.bind.annotation.XmlAccessType;
import javax.xml.bind.annotation.XmlAccessorType;
import javax.xml.bind.annotation.XmlElement;
import javax.xml.bind.annotation.XmlType;
/**
* <p>Java-Klasse für DC_EVPowerDeliveryParameterType complex type.
*
* <p>Das folgende Schemafragment gibt den erwarteten Content an, der in dieser Klasse enthalten ist.
*
* <pre>
* &lt;complexType name="DC_EVPowerDeliveryParameterType">
* &lt;complexContent>
* &lt;extension base="{urn:iso:15118:2:2013:MsgDataTypes}EVPowerDeliveryParameterType">
* &lt;sequence>
* &lt;element name="DC_EVStatus" type="{urn:iso:15118:2:2013:MsgDataTypes}DC_EVStatusType"/>
* &lt;element name="BulkChargingComplete" type="{http://www.w3.org/2001/XMLSchema}boolean" minOccurs="0"/>
* &lt;element name="ChargingComplete" type="{http://www.w3.org/2001/XMLSchema}boolean"/>
* &lt;/sequence>
* &lt;/extension>
* &lt;/complexContent>
* &lt;/complexType>
* </pre>
*
*
*/
@XmlAccessorType(XmlAccessType.FIELD)
@XmlType(name = "DC_EVPowerDeliveryParameterType", propOrder = {
"dcevStatus",
"bulkChargingComplete",
"chargingComplete"
})
public class DCEVPowerDeliveryParameterType
extends EVPowerDeliveryParameterType
{
@XmlElement(name = "DC_EVStatus", required = true)
protected DCEVStatusType dcevStatus;
@XmlElement(name = "BulkChargingComplete")
protected Boolean bulkChargingComplete;
@XmlElement(name = "ChargingComplete")
protected boolean chargingComplete;
/**
* Ruft den Wert der dcevStatus-Eigenschaft ab.
*
* @return
* possible object is
* {@link DCEVStatusType }
*
*/
public DCEVStatusType getDCEVStatus() {
return dcevStatus;
}
/**
* Legt den Wert der dcevStatus-Eigenschaft fest.
*
* @param value
* allowed object is
* {@link DCEVStatusType }
*
*/
public void setDCEVStatus(DCEVStatusType value) {
this.dcevStatus = value;
}
/**
* Ruft den Wert der bulkChargingComplete-Eigenschaft ab.
*
* @return
* possible object is
* {@link Boolean }
*
*/
public Boolean isBulkChargingComplete() {
return bulkChargingComplete;
}
/**
* Legt den Wert der bulkChargingComplete-Eigenschaft fest.
*
* @param value
* allowed object is
* {@link Boolean }
*
*/
public void setBulkChargingComplete(Boolean value) {
this.bulkChargingComplete = value;
}
/**
* Ruft den Wert der chargingComplete-Eigenschaft ab.
*
*/
public boolean isChargingComplete() {
return chargingComplete;
}
/**
* Legt den Wert der chargingComplete-Eigenschaft fest.
*
*/
public void setChargingComplete(boolean value) {
this.chargingComplete = value;
}
}

View File

@@ -0,0 +1,318 @@
/*******************************************************************************
* The MIT License (MIT)
*
* Copyright (c) 2015 - 2019 Dr. Marc Mültin (V2G Clarity)
*
* Permission is hereby granted, free of charge, to any person obtaining a copy
* of this software and associated documentation files (the "Software"), to deal
* in the Software without restriction, including without limitation the rights
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
* copies of the Software, and to permit persons to whom the Software is
* furnished to do so, subject to the following conditions:
*
* The above copyright notice and this permission notice shall be included in
* all copies or substantial portions of the Software.
*
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
* THE SOFTWARE.
*******************************************************************************/
//
// Diese Datei wurde mit der JavaTM Architecture for XML Binding(JAXB) Reference Implementation, v2.2.8-b130911.1802 generiert
// Siehe <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a>
// Änderungen an dieser Datei gehen bei einer Neukompilierung des Quellschemas verloren.
// Generiert: 2014.10.07 um 04:55:05 PM CEST
//
package com.v2gclarity.risev2g.shared.v2gMessages.msgDef;
import javax.xml.bind.annotation.XmlAccessType;
import javax.xml.bind.annotation.XmlAccessorType;
import javax.xml.bind.annotation.XmlElement;
import javax.xml.bind.annotation.XmlType;
/**
* <p>Java-Klasse für DC_EVSEChargeParameterType complex type.
*
* <p>Das folgende Schemafragment gibt den erwarteten Content an, der in dieser Klasse enthalten ist.
*
* <pre>
* &lt;complexType name="DC_EVSEChargeParameterType">
* &lt;complexContent>
* &lt;extension base="{urn:iso:15118:2:2013:MsgDataTypes}EVSEChargeParameterType">
* &lt;sequence>
* &lt;element name="DC_EVSEStatus" type="{urn:iso:15118:2:2013:MsgDataTypes}DC_EVSEStatusType"/>
* &lt;element name="EVSEMaximumCurrentLimit" type="{urn:iso:15118:2:2013:MsgDataTypes}PhysicalValueType"/>
* &lt;element name="EVSEMaximumPowerLimit" type="{urn:iso:15118:2:2013:MsgDataTypes}PhysicalValueType"/>
* &lt;element name="EVSEMaximumVoltageLimit" type="{urn:iso:15118:2:2013:MsgDataTypes}PhysicalValueType"/>
* &lt;element name="EVSEMinimumCurrentLimit" type="{urn:iso:15118:2:2013:MsgDataTypes}PhysicalValueType"/>
* &lt;element name="EVSEMinimumVoltageLimit" type="{urn:iso:15118:2:2013:MsgDataTypes}PhysicalValueType"/>
* &lt;element name="EVSECurrentRegulationTolerance" type="{urn:iso:15118:2:2013:MsgDataTypes}PhysicalValueType" minOccurs="0"/>
* &lt;element name="EVSEPeakCurrentRipple" type="{urn:iso:15118:2:2013:MsgDataTypes}PhysicalValueType"/>
* &lt;element name="EVSEEnergyToBeDelivered" type="{urn:iso:15118:2:2013:MsgDataTypes}PhysicalValueType" minOccurs="0"/>
* &lt;/sequence>
* &lt;/extension>
* &lt;/complexContent>
* &lt;/complexType>
* </pre>
*
*
*/
@XmlAccessorType(XmlAccessType.FIELD)
@XmlType(name = "DC_EVSEChargeParameterType", propOrder = {
"dcevseStatus",
"evseMaximumCurrentLimit",
"evseMaximumPowerLimit",
"evseMaximumVoltageLimit",
"evseMinimumCurrentLimit",
"evseMinimumVoltageLimit",
"evseCurrentRegulationTolerance",
"evsePeakCurrentRipple",
"evseEnergyToBeDelivered"
})
public class DCEVSEChargeParameterType
extends EVSEChargeParameterType
{
@XmlElement(name = "DC_EVSEStatus", required = true)
protected DCEVSEStatusType dcevseStatus;
@XmlElement(name = "EVSEMaximumCurrentLimit", required = true)
protected PhysicalValueType evseMaximumCurrentLimit;
@XmlElement(name = "EVSEMaximumPowerLimit", required = true)
protected PhysicalValueType evseMaximumPowerLimit;
@XmlElement(name = "EVSEMaximumVoltageLimit", required = true)
protected PhysicalValueType evseMaximumVoltageLimit;
@XmlElement(name = "EVSEMinimumCurrentLimit", required = true)
protected PhysicalValueType evseMinimumCurrentLimit;
@XmlElement(name = "EVSEMinimumVoltageLimit", required = true)
protected PhysicalValueType evseMinimumVoltageLimit;
@XmlElement(name = "EVSECurrentRegulationTolerance")
protected PhysicalValueType evseCurrentRegulationTolerance;
@XmlElement(name = "EVSEPeakCurrentRipple", required = true)
protected PhysicalValueType evsePeakCurrentRipple;
@XmlElement(name = "EVSEEnergyToBeDelivered")
protected PhysicalValueType evseEnergyToBeDelivered;
/**
* Ruft den Wert der dcevseStatus-Eigenschaft ab.
*
* @return
* possible object is
* {@link DCEVSEStatusType }
*
*/
public DCEVSEStatusType getDCEVSEStatus() {
return dcevseStatus;
}
/**
* Legt den Wert der dcevseStatus-Eigenschaft fest.
*
* @param value
* allowed object is
* {@link DCEVSEStatusType }
*
*/
public void setDCEVSEStatus(DCEVSEStatusType value) {
this.dcevseStatus = value;
}
/**
* Ruft den Wert der evseMaximumCurrentLimit-Eigenschaft ab.
*
* @return
* possible object is
* {@link PhysicalValueType }
*
*/
public PhysicalValueType getEVSEMaximumCurrentLimit() {
return evseMaximumCurrentLimit;
}
/**
* Legt den Wert der evseMaximumCurrentLimit-Eigenschaft fest.
*
* @param value
* allowed object is
* {@link PhysicalValueType }
*
*/
public void setEVSEMaximumCurrentLimit(PhysicalValueType value) {
this.evseMaximumCurrentLimit = value;
}
/**
* Ruft den Wert der evseMaximumPowerLimit-Eigenschaft ab.
*
* @return
* possible object is
* {@link PhysicalValueType }
*
*/
public PhysicalValueType getEVSEMaximumPowerLimit() {
return evseMaximumPowerLimit;
}
/**
* Legt den Wert der evseMaximumPowerLimit-Eigenschaft fest.
*
* @param value
* allowed object is
* {@link PhysicalValueType }
*
*/
public void setEVSEMaximumPowerLimit(PhysicalValueType value) {
this.evseMaximumPowerLimit = value;
}
/**
* Ruft den Wert der evseMaximumVoltageLimit-Eigenschaft ab.
*
* @return
* possible object is
* {@link PhysicalValueType }
*
*/
public PhysicalValueType getEVSEMaximumVoltageLimit() {
return evseMaximumVoltageLimit;
}
/**
* Legt den Wert der evseMaximumVoltageLimit-Eigenschaft fest.
*
* @param value
* allowed object is
* {@link PhysicalValueType }
*
*/
public void setEVSEMaximumVoltageLimit(PhysicalValueType value) {
this.evseMaximumVoltageLimit = value;
}
/**
* Ruft den Wert der evseMinimumCurrentLimit-Eigenschaft ab.
*
* @return
* possible object is
* {@link PhysicalValueType }
*
*/
public PhysicalValueType getEVSEMinimumCurrentLimit() {
return evseMinimumCurrentLimit;
}
/**
* Legt den Wert der evseMinimumCurrentLimit-Eigenschaft fest.
*
* @param value
* allowed object is
* {@link PhysicalValueType }
*
*/
public void setEVSEMinimumCurrentLimit(PhysicalValueType value) {
this.evseMinimumCurrentLimit = value;
}
/**
* Ruft den Wert der evseMinimumVoltageLimit-Eigenschaft ab.
*
* @return
* possible object is
* {@link PhysicalValueType }
*
*/
public PhysicalValueType getEVSEMinimumVoltageLimit() {
return evseMinimumVoltageLimit;
}
/**
* Legt den Wert der evseMinimumVoltageLimit-Eigenschaft fest.
*
* @param value
* allowed object is
* {@link PhysicalValueType }
*
*/
public void setEVSEMinimumVoltageLimit(PhysicalValueType value) {
this.evseMinimumVoltageLimit = value;
}
/**
* Ruft den Wert der evseCurrentRegulationTolerance-Eigenschaft ab.
*
* @return
* possible object is
* {@link PhysicalValueType }
*
*/
public PhysicalValueType getEVSECurrentRegulationTolerance() {
return evseCurrentRegulationTolerance;
}
/**
* Legt den Wert der evseCurrentRegulationTolerance-Eigenschaft fest.
*
* @param value
* allowed object is
* {@link PhysicalValueType }
*
*/
public void setEVSECurrentRegulationTolerance(PhysicalValueType value) {
this.evseCurrentRegulationTolerance = value;
}
/**
* Ruft den Wert der evsePeakCurrentRipple-Eigenschaft ab.
*
* @return
* possible object is
* {@link PhysicalValueType }
*
*/
public PhysicalValueType getEVSEPeakCurrentRipple() {
return evsePeakCurrentRipple;
}
/**
* Legt den Wert der evsePeakCurrentRipple-Eigenschaft fest.
*
* @param value
* allowed object is
* {@link PhysicalValueType }
*
*/
public void setEVSEPeakCurrentRipple(PhysicalValueType value) {
this.evsePeakCurrentRipple = value;
}
/**
* Ruft den Wert der evseEnergyToBeDelivered-Eigenschaft ab.
*
* @return
* possible object is
* {@link PhysicalValueType }
*
*/
public PhysicalValueType getEVSEEnergyToBeDelivered() {
return evseEnergyToBeDelivered;
}
/**
* Legt den Wert der evseEnergyToBeDelivered-Eigenschaft fest.
*
* @param value
* allowed object is
* {@link PhysicalValueType }
*
*/
public void setEVSEEnergyToBeDelivered(PhysicalValueType value) {
this.evseEnergyToBeDelivered = value;
}
}

View File

@@ -0,0 +1,111 @@
/*******************************************************************************
* The MIT License (MIT)
*
* Copyright (c) 2015 - 2019 Dr. Marc Mültin (V2G Clarity)
*
* Permission is hereby granted, free of charge, to any person obtaining a copy
* of this software and associated documentation files (the "Software"), to deal
* in the Software without restriction, including without limitation the rights
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
* copies of the Software, and to permit persons to whom the Software is
* furnished to do so, subject to the following conditions:
*
* The above copyright notice and this permission notice shall be included in
* all copies or substantial portions of the Software.
*
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
* THE SOFTWARE.
*******************************************************************************/
//
// Diese Datei wurde mit der JavaTM Architecture for XML Binding(JAXB) Reference Implementation, v2.2.8-b130911.1802 generiert
// Siehe <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a>
// Änderungen an dieser Datei gehen bei einer Neukompilierung des Quellschemas verloren.
// Generiert: 2014.10.07 um 04:55:05 PM CEST
//
package com.v2gclarity.risev2g.shared.v2gMessages.msgDef;
import javax.xml.bind.annotation.XmlEnum;
import javax.xml.bind.annotation.XmlEnumValue;
import javax.xml.bind.annotation.XmlType;
/**
* <p>Java-Klasse für DC_EVSEStatusCodeType.
*
* <p>Das folgende Schemafragment gibt den erwarteten Content an, der in dieser Klasse enthalten ist.
* <p>
* <pre>
* &lt;simpleType name="DC_EVSEStatusCodeType">
* &lt;restriction base="{http://www.w3.org/2001/XMLSchema}string">
* &lt;enumeration value="EVSE_NotReady"/>
* &lt;enumeration value="EVSE_Ready"/>
* &lt;enumeration value="EVSE_Shutdown"/>
* &lt;enumeration value="EVSE_UtilityInterruptEvent"/>
* &lt;enumeration value="EVSE_IsolationMonitoringActive"/>
* &lt;enumeration value="EVSE_EmergencyShutdown"/>
* &lt;enumeration value="EVSE_Malfunction"/>
* &lt;enumeration value="Reserved_8"/>
* &lt;enumeration value="Reserved_9"/>
* &lt;enumeration value="Reserved_A"/>
* &lt;enumeration value="Reserved_B"/>
* &lt;enumeration value="Reserved_C"/>
* &lt;/restriction>
* &lt;/simpleType>
* </pre>
*
*/
@XmlType(name = "DC_EVSEStatusCodeType")
@XmlEnum
public enum DCEVSEStatusCodeType {
@XmlEnumValue("EVSE_NotReady")
EVSE_NOT_READY("EVSE_NotReady"),
@XmlEnumValue("EVSE_Ready")
EVSE_READY("EVSE_Ready"),
@XmlEnumValue("EVSE_Shutdown")
EVSE_SHUTDOWN("EVSE_Shutdown"),
@XmlEnumValue("EVSE_UtilityInterruptEvent")
EVSE_UTILITY_INTERRUPT_EVENT("EVSE_UtilityInterruptEvent"),
@XmlEnumValue("EVSE_IsolationMonitoringActive")
EVSE_ISOLATION_MONITORING_ACTIVE("EVSE_IsolationMonitoringActive"),
@XmlEnumValue("EVSE_EmergencyShutdown")
EVSE_EMERGENCY_SHUTDOWN("EVSE_EmergencyShutdown"),
@XmlEnumValue("EVSE_Malfunction")
EVSE_MALFUNCTION("EVSE_Malfunction"),
@XmlEnumValue("Reserved_8")
RESERVED_8("Reserved_8"),
@XmlEnumValue("Reserved_9")
RESERVED_9("Reserved_9"),
@XmlEnumValue("Reserved_A")
RESERVED_A("Reserved_A"),
@XmlEnumValue("Reserved_B")
RESERVED_B("Reserved_B"),
@XmlEnumValue("Reserved_C")
RESERVED_C("Reserved_C");
private final String value;
DCEVSEStatusCodeType(String v) {
value = v;
}
public String value() {
return value;
}
public static DCEVSEStatusCodeType fromValue(String v) {
for (DCEVSEStatusCodeType c: DCEVSEStatusCodeType.values()) {
if (c.value.equals(v)) {
return c;
}
}
throw new IllegalArgumentException(v);
}
}

View File

@@ -0,0 +1,125 @@
/*******************************************************************************
* The MIT License (MIT)
*
* Copyright (c) 2015 - 2019 Dr. Marc Mültin (V2G Clarity)
*
* Permission is hereby granted, free of charge, to any person obtaining a copy
* of this software and associated documentation files (the "Software"), to deal
* in the Software without restriction, including without limitation the rights
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
* copies of the Software, and to permit persons to whom the Software is
* furnished to do so, subject to the following conditions:
*
* The above copyright notice and this permission notice shall be included in
* all copies or substantial portions of the Software.
*
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
* THE SOFTWARE.
*******************************************************************************/
//
// Diese Datei wurde mit der JavaTM Architecture for XML Binding(JAXB) Reference Implementation, v2.2.8-b130911.1802 generiert
// Siehe <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a>
// Änderungen an dieser Datei gehen bei einer Neukompilierung des Quellschemas verloren.
// Generiert: 2014.10.07 um 04:55:05 PM CEST
//
package com.v2gclarity.risev2g.shared.v2gMessages.msgDef;
import javax.xml.bind.annotation.XmlAccessType;
import javax.xml.bind.annotation.XmlAccessorType;
import javax.xml.bind.annotation.XmlElement;
import javax.xml.bind.annotation.XmlSchemaType;
import javax.xml.bind.annotation.XmlType;
/**
* <p>Java-Klasse für DC_EVSEStatusType complex type.
*
* <p>Das folgende Schemafragment gibt den erwarteten Content an, der in dieser Klasse enthalten ist.
*
* <pre>
* &lt;complexType name="DC_EVSEStatusType">
* &lt;complexContent>
* &lt;extension base="{urn:iso:15118:2:2013:MsgDataTypes}EVSEStatusType">
* &lt;sequence>
* &lt;element name="EVSEIsolationStatus" type="{urn:iso:15118:2:2013:MsgDataTypes}isolationLevelType" minOccurs="0"/>
* &lt;element name="EVSEStatusCode" type="{urn:iso:15118:2:2013:MsgDataTypes}DC_EVSEStatusCodeType"/>
* &lt;/sequence>
* &lt;/extension>
* &lt;/complexContent>
* &lt;/complexType>
* </pre>
*
*
*/
@XmlAccessorType(XmlAccessType.FIELD)
@XmlType(name = "DC_EVSEStatusType", propOrder = {
"evseIsolationStatus",
"evseStatusCode"
})
public class DCEVSEStatusType
extends EVSEStatusType
{
@XmlElement(name = "EVSEIsolationStatus")
@XmlSchemaType(name = "string")
protected IsolationLevelType evseIsolationStatus;
@XmlElement(name = "EVSEStatusCode", required = true)
@XmlSchemaType(name = "string")
protected DCEVSEStatusCodeType evseStatusCode;
/**
* Ruft den Wert der evseIsolationStatus-Eigenschaft ab.
*
* @return
* possible object is
* {@link IsolationLevelType }
*
*/
public IsolationLevelType getEVSEIsolationStatus() {
return evseIsolationStatus;
}
/**
* Legt den Wert der evseIsolationStatus-Eigenschaft fest.
*
* @param value
* allowed object is
* {@link IsolationLevelType }
*
*/
public void setEVSEIsolationStatus(IsolationLevelType value) {
this.evseIsolationStatus = value;
}
/**
* Ruft den Wert der evseStatusCode-Eigenschaft ab.
*
* @return
* possible object is
* {@link DCEVSEStatusCodeType }
*
*/
public DCEVSEStatusCodeType getEVSEStatusCode() {
return evseStatusCode;
}
/**
* Legt den Wert der evseStatusCode-Eigenschaft fest.
*
* @param value
* allowed object is
* {@link DCEVSEStatusCodeType }
*
*/
public void setEVSEStatusCode(DCEVSEStatusCodeType value) {
this.evseStatusCode = value;
}
}

View File

@@ -0,0 +1,136 @@
/*******************************************************************************
* The MIT License (MIT)
*
* Copyright (c) 2015 - 2019 Dr. Marc Mültin (V2G Clarity)
*
* Permission is hereby granted, free of charge, to any person obtaining a copy
* of this software and associated documentation files (the "Software"), to deal
* in the Software without restriction, including without limitation the rights
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
* copies of the Software, and to permit persons to whom the Software is
* furnished to do so, subject to the following conditions:
*
* The above copyright notice and this permission notice shall be included in
* all copies or substantial portions of the Software.
*
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
* THE SOFTWARE.
*******************************************************************************/
//
// Diese Datei wurde mit der JavaTM Architecture for XML Binding(JAXB) Reference Implementation, v2.2.8-b130911.1802 generiert
// Siehe <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a>
// Änderungen an dieser Datei gehen bei einer Neukompilierung des Quellschemas verloren.
// Generiert: 2014.10.07 um 04:55:05 PM CEST
//
package com.v2gclarity.risev2g.shared.v2gMessages.msgDef;
import javax.xml.bind.annotation.XmlAccessType;
import javax.xml.bind.annotation.XmlAccessorType;
import javax.xml.bind.annotation.XmlElement;
import javax.xml.bind.annotation.XmlSchemaType;
import javax.xml.bind.annotation.XmlType;
/**
* <p>Java-Klasse für DC_EVStatusType complex type.
*
* <p>Das folgende Schemafragment gibt den erwarteten Content an, der in dieser Klasse enthalten ist.
*
* <pre>
* &lt;complexType name="DC_EVStatusType">
* &lt;complexContent>
* &lt;extension base="{urn:iso:15118:2:2013:MsgDataTypes}EVStatusType">
* &lt;sequence>
* &lt;element name="EVReady" type="{http://www.w3.org/2001/XMLSchema}boolean"/>
* &lt;element name="EVErrorCode" type="{urn:iso:15118:2:2013:MsgDataTypes}DC_EVErrorCodeType"/>
* &lt;element name="EVRESSSOC" type="{urn:iso:15118:2:2013:MsgDataTypes}percentValueType"/>
* &lt;/sequence>
* &lt;/extension>
* &lt;/complexContent>
* &lt;/complexType>
* </pre>
*
*
*/
@XmlAccessorType(XmlAccessType.FIELD)
@XmlType(name = "DC_EVStatusType", propOrder = {
"evReady",
"evErrorCode",
"evresssoc"
})
public class DCEVStatusType
extends EVStatusType
{
@XmlElement(name = "EVReady")
protected boolean evReady;
@XmlElement(name = "EVErrorCode", required = true)
@XmlSchemaType(name = "string")
protected DCEVErrorCodeType evErrorCode;
@XmlElement(name = "EVRESSSOC")
protected byte evresssoc;
/**
* Ruft den Wert der evReady-Eigenschaft ab.
*
*/
public boolean isEVReady() {
return evReady;
}
/**
* Legt den Wert der evReady-Eigenschaft fest.
*
*/
public void setEVReady(boolean value) {
this.evReady = value;
}
/**
* Ruft den Wert der evErrorCode-Eigenschaft ab.
*
* @return
* possible object is
* {@link DCEVErrorCodeType }
*
*/
public DCEVErrorCodeType getEVErrorCode() {
return evErrorCode;
}
/**
* Legt den Wert der evErrorCode-Eigenschaft fest.
*
* @param value
* allowed object is
* {@link DCEVErrorCodeType }
*
*/
public void setEVErrorCode(DCEVErrorCodeType value) {
this.evErrorCode = value;
}
/**
* Ruft den Wert der evresssoc-Eigenschaft ab.
*
*/
public byte getEVRESSSOC() {
return evresssoc;
}
/**
* Legt den Wert der evresssoc-Eigenschaft fest.
*
*/
public void setEVRESSSOC(byte value) {
this.evresssoc = value;
}
}

View File

@@ -0,0 +1,250 @@
/*******************************************************************************
* The MIT License (MIT)
*
* Copyright (c) 2015 - 2019 Dr. Marc Mültin (V2G Clarity)
*
* Permission is hereby granted, free of charge, to any person obtaining a copy
* of this software and associated documentation files (the "Software"), to deal
* in the Software without restriction, including without limitation the rights
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
* copies of the Software, and to permit persons to whom the Software is
* furnished to do so, subject to the following conditions:
*
* The above copyright notice and this permission notice shall be included in
* all copies or substantial portions of the Software.
*
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
* THE SOFTWARE.
*******************************************************************************/
//
// Diese Datei wurde mit der JavaTM Architecture for XML Binding(JAXB) Reference Implementation, v2.2.8-b130911.1802 generiert
// Siehe <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a>
// Änderungen an dieser Datei gehen bei einer Neukompilierung des Quellschemas verloren.
// Generiert: 2014.10.07 um 04:55:05 PM CEST
//
package com.v2gclarity.risev2g.shared.v2gMessages.msgDef;
import javax.xml.bind.annotation.XmlAccessType;
import javax.xml.bind.annotation.XmlAccessorType;
import javax.xml.bind.annotation.XmlElement;
import javax.xml.bind.annotation.XmlType;
/**
* <p>Java-Klasse für DSAKeyValueType complex type.
*
* <p>Das folgende Schemafragment gibt den erwarteten Content an, der in dieser Klasse enthalten ist.
*
* <pre>
* &lt;complexType name="DSAKeyValueType">
* &lt;complexContent>
* &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
* &lt;sequence>
* &lt;sequence minOccurs="0">
* &lt;element name="P" type="{http://www.w3.org/2000/09/xmldsig#}CryptoBinary"/>
* &lt;element name="Q" type="{http://www.w3.org/2000/09/xmldsig#}CryptoBinary"/>
* &lt;/sequence>
* &lt;element name="G" type="{http://www.w3.org/2000/09/xmldsig#}CryptoBinary" minOccurs="0"/>
* &lt;element name="Y" type="{http://www.w3.org/2000/09/xmldsig#}CryptoBinary"/>
* &lt;element name="J" type="{http://www.w3.org/2000/09/xmldsig#}CryptoBinary" minOccurs="0"/>
* &lt;sequence minOccurs="0">
* &lt;element name="Seed" type="{http://www.w3.org/2000/09/xmldsig#}CryptoBinary"/>
* &lt;element name="PgenCounter" type="{http://www.w3.org/2000/09/xmldsig#}CryptoBinary"/>
* &lt;/sequence>
* &lt;/sequence>
* &lt;/restriction>
* &lt;/complexContent>
* &lt;/complexType>
* </pre>
*
*
*/
@XmlAccessorType(XmlAccessType.FIELD)
@XmlType(name = "DSAKeyValueType", namespace = "http://www.w3.org/2000/09/xmldsig#", propOrder = {
"p",
"q",
"g",
"y",
"j",
"seed",
"pgenCounter"
})
public class DSAKeyValueType {
@XmlElement(name = "P")
protected byte[] p;
@XmlElement(name = "Q")
protected byte[] q;
@XmlElement(name = "G")
protected byte[] g;
@XmlElement(name = "Y", required = true)
protected byte[] y;
@XmlElement(name = "J")
protected byte[] j;
@XmlElement(name = "Seed")
protected byte[] seed;
@XmlElement(name = "PgenCounter")
protected byte[] pgenCounter;
/**
* Ruft den Wert der p-Eigenschaft ab.
*
* @return
* possible object is
* byte[]
*/
public byte[] getP() {
return p;
}
/**
* Legt den Wert der p-Eigenschaft fest.
*
* @param value
* allowed object is
* byte[]
*/
public void setP(byte[] value) {
this.p = value;
}
/**
* Ruft den Wert der q-Eigenschaft ab.
*
* @return
* possible object is
* byte[]
*/
public byte[] getQ() {
return q;
}
/**
* Legt den Wert der q-Eigenschaft fest.
*
* @param value
* allowed object is
* byte[]
*/
public void setQ(byte[] value) {
this.q = value;
}
/**
* Ruft den Wert der g-Eigenschaft ab.
*
* @return
* possible object is
* byte[]
*/
public byte[] getG() {
return g;
}
/**
* Legt den Wert der g-Eigenschaft fest.
*
* @param value
* allowed object is
* byte[]
*/
public void setG(byte[] value) {
this.g = value;
}
/**
* Ruft den Wert der y-Eigenschaft ab.
*
* @return
* possible object is
* byte[]
*/
public byte[] getY() {
return y;
}
/**
* Legt den Wert der y-Eigenschaft fest.
*
* @param value
* allowed object is
* byte[]
*/
public void setY(byte[] value) {
this.y = value;
}
/**
* Ruft den Wert der j-Eigenschaft ab.
*
* @return
* possible object is
* byte[]
*/
public byte[] getJ() {
return j;
}
/**
* Legt den Wert der j-Eigenschaft fest.
*
* @param value
* allowed object is
* byte[]
*/
public void setJ(byte[] value) {
this.j = value;
}
/**
* Ruft den Wert der seed-Eigenschaft ab.
*
* @return
* possible object is
* byte[]
*/
public byte[] getSeed() {
return seed;
}
/**
* Legt den Wert der seed-Eigenschaft fest.
*
* @param value
* allowed object is
* byte[]
*/
public void setSeed(byte[] value) {
this.seed = value;
}
/**
* Ruft den Wert der pgenCounter-Eigenschaft ab.
*
* @return
* possible object is
* byte[]
*/
public byte[] getPgenCounter() {
return pgenCounter;
}
/**
* Legt den Wert der pgenCounter-Eigenschaft fest.
*
* @param value
* allowed object is
* byte[]
*/
public void setPgenCounter(byte[] value) {
this.pgenCounter = value;
}
}

View File

@@ -0,0 +1,122 @@
/*******************************************************************************
* The MIT License (MIT)
*
* Copyright (c) 2015 - 2019 Dr. Marc Mültin (V2G Clarity)
*
* Permission is hereby granted, free of charge, to any person obtaining a copy
* of this software and associated documentation files (the "Software"), to deal
* in the Software without restriction, including without limitation the rights
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
* copies of the Software, and to permit persons to whom the Software is
* furnished to do so, subject to the following conditions:
*
* The above copyright notice and this permission notice shall be included in
* all copies or substantial portions of the Software.
*
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
* THE SOFTWARE.
*******************************************************************************/
//
// Diese Datei wurde mit der JavaTM Architecture for XML Binding(JAXB) Reference Implementation, v2.2.8-b130911.1802 generiert
// Siehe <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a>
// Änderungen an dieser Datei gehen bei einer Neukompilierung des Quellschemas verloren.
// Generiert: 2014.10.07 um 04:55:05 PM CEST
//
package com.v2gclarity.risev2g.shared.v2gMessages.msgDef;
import javax.xml.bind.annotation.XmlAccessType;
import javax.xml.bind.annotation.XmlAccessorType;
import javax.xml.bind.annotation.XmlAttribute;
import javax.xml.bind.annotation.XmlID;
import javax.xml.bind.annotation.XmlSchemaType;
import javax.xml.bind.annotation.XmlType;
import javax.xml.bind.annotation.XmlValue;
import javax.xml.bind.annotation.adapters.CollapsedStringAdapter;
import javax.xml.bind.annotation.adapters.XmlJavaTypeAdapter;
/**
* <p>Java-Klasse für DiffieHellmanPublickeyType complex type.
*
* <p>Das folgende Schemafragment gibt den erwarteten Content an, der in dieser Klasse enthalten ist.
*
* <pre>
* &lt;complexType name="DiffieHellmanPublickeyType">
* &lt;simpleContent>
* &lt;extension base="&lt;urn:iso:15118:2:2013:MsgDataTypes>dHpublickeyType">
* &lt;attribute name="Id" use="required" type="{http://www.w3.org/2001/XMLSchema}ID" />
* &lt;/extension>
* &lt;/simpleContent>
* &lt;/complexType>
* </pre>
*
*
*/
@XmlAccessorType(XmlAccessType.FIELD)
@XmlType(name = "DiffieHellmanPublickeyType", propOrder = {
"value"
})
public class DiffieHellmanPublickeyType {
@XmlValue
protected byte[] value;
@XmlAttribute(name = "Id", namespace = "urn:iso:15118:2:2013:MsgDataTypes", required = true)
@XmlJavaTypeAdapter(CollapsedStringAdapter.class)
@XmlID
@XmlSchemaType(name = "ID")
protected String id;
/**
* Ruft den Wert der value-Eigenschaft ab.
*
* @return
* possible object is
* byte[]
*/
public byte[] getValue() {
return value;
}
/**
* Legt den Wert der value-Eigenschaft fest.
*
* @param value
* allowed object is
* byte[]
*/
public void setValue(byte[] value) {
this.value = value;
}
/**
* Ruft den Wert der id-Eigenschaft ab.
*
* @return
* possible object is
* {@link String }
*
*/
public String getId() {
return id;
}
/**
* Legt den Wert der id-Eigenschaft fest.
*
* @param value
* allowed object is
* {@link String }
*
*/
public void setId(String value) {
this.id = value;
}
}

View File

@@ -0,0 +1,134 @@
/*******************************************************************************
* The MIT License (MIT)
*
* Copyright (c) 2015 - 2019 Dr. Marc Mültin (V2G Clarity)
*
* Permission is hereby granted, free of charge, to any person obtaining a copy
* of this software and associated documentation files (the "Software"), to deal
* in the Software without restriction, including without limitation the rights
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
* copies of the Software, and to permit persons to whom the Software is
* furnished to do so, subject to the following conditions:
*
* The above copyright notice and this permission notice shall be included in
* all copies or substantial portions of the Software.
*
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
* THE SOFTWARE.
*******************************************************************************/
//
// Diese Datei wurde mit der JavaTM Architecture for XML Binding(JAXB) Reference Implementation, v2.2.8-b130911.1802 generiert
// Siehe <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a>
// Änderungen an dieser Datei gehen bei einer Neukompilierung des Quellschemas verloren.
// Generiert: 2014.10.07 um 04:55:05 PM CEST
//
package com.v2gclarity.risev2g.shared.v2gMessages.msgDef;
import java.util.ArrayList;
import java.util.List;
import javax.xml.bind.annotation.XmlAccessType;
import javax.xml.bind.annotation.XmlAccessorType;
import javax.xml.bind.annotation.XmlAnyElement;
import javax.xml.bind.annotation.XmlAttribute;
import javax.xml.bind.annotation.XmlMixed;
import javax.xml.bind.annotation.XmlSchemaType;
import javax.xml.bind.annotation.XmlType;
import org.w3c.dom.Element;
/**
* <p>Java-Klasse für DigestMethodType complex type.
*
* <p>Das folgende Schemafragment gibt den erwarteten Content an, der in dieser Klasse enthalten ist.
*
* <pre>
* &lt;complexType name="DigestMethodType">
* &lt;complexContent>
* &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
* &lt;sequence>
* &lt;any processContents='lax' namespace='##other' maxOccurs="unbounded" minOccurs="0"/>
* &lt;/sequence>
* &lt;attribute name="Algorithm" use="required" type="{http://www.w3.org/2001/XMLSchema}anyURI" />
* &lt;/restriction>
* &lt;/complexContent>
* &lt;/complexType>
* </pre>
*
*
*/
@XmlAccessorType(XmlAccessType.FIELD)
@XmlType(name = "DigestMethodType", namespace = "http://www.w3.org/2000/09/xmldsig#", propOrder = {
"content"
})
public class DigestMethodType {
@XmlMixed
@XmlAnyElement(lax = true)
protected List<Object> content;
@XmlAttribute(name = "Algorithm", required = true)
@XmlSchemaType(name = "anyURI")
protected String algorithm;
/**
* Gets the value of the content property.
*
* <p>
* This accessor method returns a reference to the live list,
* not a snapshot. Therefore any modification you make to the
* returned list will be present inside the JAXB object.
* This is why there is not a <CODE>set</CODE> method for the content property.
*
* <p>
* For example, to add a new item, do as follows:
* <pre>
* getContent().add(newItem);
* </pre>
*
*
* <p>
* Objects of the following type(s) are allowed in the list
* {@link Object }
* {@link Element }
* {@link String }
*
*
*/
public List<Object> getContent() {
if (content == null) {
content = new ArrayList<Object>();
}
return this.content;
}
/**
* Ruft den Wert der algorithm-Eigenschaft ab.
*
* @return
* possible object is
* {@link String }
*
*/
public String getAlgorithm() {
return algorithm;
}
/**
* Legt den Wert der algorithm-Eigenschaft fest.
*
* @param value
* allowed object is
* {@link String }
*
*/
public void setAlgorithm(String value) {
this.algorithm = value;
}
}

View File

@@ -0,0 +1,124 @@
/*******************************************************************************
* The MIT License (MIT)
*
* Copyright (c) 2015 - 2019 Dr. Marc Mültin (V2G Clarity)
*
* Permission is hereby granted, free of charge, to any person obtaining a copy
* of this software and associated documentation files (the "Software"), to deal
* in the Software without restriction, including without limitation the rights
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
* copies of the Software, and to permit persons to whom the Software is
* furnished to do so, subject to the following conditions:
*
* The above copyright notice and this permission notice shall be included in
* all copies or substantial portions of the Software.
*
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
* THE SOFTWARE.
*******************************************************************************/
//
// Diese Datei wurde mit der JavaTM Architecture for XML Binding(JAXB) Reference Implementation, v2.2.8-b130911.1802 generiert
// Siehe <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a>
// Änderungen an dieser Datei gehen bei einer Neukompilierung des Quellschemas verloren.
// Generiert: 2014.10.07 um 04:55:05 PM CEST
//
package com.v2gclarity.risev2g.shared.v2gMessages.msgDef;
import javax.xml.bind.annotation.XmlAccessType;
import javax.xml.bind.annotation.XmlAccessorType;
import javax.xml.bind.annotation.XmlAttribute;
import javax.xml.bind.annotation.XmlID;
import javax.xml.bind.annotation.XmlSchemaType;
import javax.xml.bind.annotation.XmlType;
import javax.xml.bind.annotation.XmlValue;
import javax.xml.bind.annotation.adapters.CollapsedStringAdapter;
import javax.xml.bind.annotation.adapters.XmlJavaTypeAdapter;
/**
* <p>Java-Klasse für EMAIDType complex type.
*
* <p>Das folgende Schemafragment gibt den erwarteten Content an, der in dieser Klasse enthalten ist.
*
* <pre>
* &lt;complexType name="EMAIDType">
* &lt;simpleContent>
* &lt;extension base="&lt;urn:iso:15118:2:2013:MsgDataTypes>eMAIDType">
* &lt;attribute name="Id" use="required" type="{http://www.w3.org/2001/XMLSchema}ID" />
* &lt;/extension>
* &lt;/simpleContent>
* &lt;/complexType>
* </pre>
*
*
*/
@XmlAccessorType(XmlAccessType.FIELD)
@XmlType(name = "EMAIDType", propOrder = {
"value"
})
public class EMAIDType {
@XmlValue
protected String value;
@XmlAttribute(name = "Id", namespace = "urn:iso:15118:2:2013:MsgDataTypes", required = true)
@XmlJavaTypeAdapter(CollapsedStringAdapter.class)
@XmlID
@XmlSchemaType(name = "ID")
protected String id;
/**
* Ruft den Wert der value-Eigenschaft ab.
*
* @return
* possible object is
* {@link String }
*
*/
public String getValue() {
return value;
}
/**
* Legt den Wert der value-Eigenschaft fest.
*
* @param value
* allowed object is
* {@link String }
*
*/
public void setValue(String value) {
this.value = value;
}
/**
* Ruft den Wert der id-Eigenschaft ab.
*
* @return
* possible object is
* {@link String }
*
*/
public String getId() {
return id;
}
/**
* Legt den Wert der id-Eigenschaft fest.
*
* @param value
* allowed object is
* {@link String }
*
*/
public void setId(String value) {
this.id = value;
}
}

View File

@@ -0,0 +1,99 @@
/*******************************************************************************
* The MIT License (MIT)
*
* Copyright (c) 2015 - 2019 Dr. Marc Mültin (V2G Clarity)
*
* Permission is hereby granted, free of charge, to any person obtaining a copy
* of this software and associated documentation files (the "Software"), to deal
* in the Software without restriction, including without limitation the rights
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
* copies of the Software, and to permit persons to whom the Software is
* furnished to do so, subject to the following conditions:
*
* The above copyright notice and this permission notice shall be included in
* all copies or substantial portions of the Software.
*
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
* THE SOFTWARE.
*******************************************************************************/
//
// Diese Datei wurde mit der JavaTM Architecture for XML Binding(JAXB) Reference Implementation, v2.2.8-b130911.1802 generiert
// Siehe <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a>
// Änderungen an dieser Datei gehen bei einer Neukompilierung des Quellschemas verloren.
// Generiert: 2014.10.07 um 04:55:05 PM CEST
//
package com.v2gclarity.risev2g.shared.v2gMessages.msgDef;
import javax.xml.bind.annotation.XmlAccessType;
import javax.xml.bind.annotation.XmlAccessorType;
import javax.xml.bind.annotation.XmlElement;
import javax.xml.bind.annotation.XmlSchemaType;
import javax.xml.bind.annotation.XmlSeeAlso;
import javax.xml.bind.annotation.XmlType;
/**
* <p>Java-Klasse für EVChargeParameterType complex type.
*
* <p>Das folgende Schemafragment gibt den erwarteten Content an, der in dieser Klasse enthalten ist.
*
* <pre>
* &lt;complexType name="EVChargeParameterType">
* &lt;complexContent>
* &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
* &lt;sequence>
* &lt;element name="DepartureTime" type="{http://www.w3.org/2001/XMLSchema}unsignedInt" minOccurs="0"/>
* &lt;/sequence>
* &lt;/restriction>
* &lt;/complexContent>
* &lt;/complexType>
* </pre>
*
*
*/
@XmlAccessorType(XmlAccessType.FIELD)
@XmlType(name = "EVChargeParameterType", propOrder = {
"departureTime"
})
@XmlSeeAlso({
DCEVChargeParameterType.class,
ACEVChargeParameterType.class
})
public abstract class EVChargeParameterType {
@XmlElement(name = "DepartureTime")
@XmlSchemaType(name = "unsignedInt")
protected Long departureTime;
/**
* Ruft den Wert der departureTime-Eigenschaft ab.
*
* @return
* possible object is
* {@link Long }
*
*/
public Long getDepartureTime() {
return departureTime;
}
/**
* Legt den Wert der departureTime-Eigenschaft fest.
*
* @param value
* allowed object is
* {@link Long }
*
*/
public void setDepartureTime(Long value) {
this.departureTime = value;
}
}

View File

@@ -0,0 +1,64 @@
/*******************************************************************************
* The MIT License (MIT)
*
* Copyright (c) 2015 - 2019 Dr. Marc Mültin (V2G Clarity)
*
* Permission is hereby granted, free of charge, to any person obtaining a copy
* of this software and associated documentation files (the "Software"), to deal
* in the Software without restriction, including without limitation the rights
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
* copies of the Software, and to permit persons to whom the Software is
* furnished to do so, subject to the following conditions:
*
* The above copyright notice and this permission notice shall be included in
* all copies or substantial portions of the Software.
*
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
* THE SOFTWARE.
*******************************************************************************/
//
// Diese Datei wurde mit der JavaTM Architecture for XML Binding(JAXB) Reference Implementation, v2.2.8-b130911.1802 generiert
// Siehe <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a>
// Änderungen an dieser Datei gehen bei einer Neukompilierung des Quellschemas verloren.
// Generiert: 2014.10.07 um 04:55:05 PM CEST
//
package com.v2gclarity.risev2g.shared.v2gMessages.msgDef;
import javax.xml.bind.annotation.XmlAccessType;
import javax.xml.bind.annotation.XmlAccessorType;
import javax.xml.bind.annotation.XmlSeeAlso;
import javax.xml.bind.annotation.XmlType;
/**
* <p>Java-Klasse für EVPowerDeliveryParameterType complex type.
*
* <p>Das folgende Schemafragment gibt den erwarteten Content an, der in dieser Klasse enthalten ist.
*
* <pre>
* &lt;complexType name="EVPowerDeliveryParameterType">
* &lt;complexContent>
* &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
* &lt;/restriction>
* &lt;/complexContent>
* &lt;/complexType>
* </pre>
*
*
*/
@XmlAccessorType(XmlAccessType.FIELD)
@XmlType(name = "EVPowerDeliveryParameterType")
@XmlSeeAlso({
DCEVPowerDeliveryParameterType.class
})
public abstract class EVPowerDeliveryParameterType {
}

Some files were not shown because too many files have changed in this diff Show More