git-tfs-id: [http://tfs.userrendszerhaz.hu:8080/tfs/DefaultCollection]$/MediaCube;C31395
<stringAttribute key="org.eclipse.jdt.launching.JRE_CONTAINER" value="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.8"/>\r
<stringAttribute key="org.eclipse.jdt.launching.PROGRAM_ARGUMENTS" value="-os ${target.os} -ws ${target.ws} -arch ${target.arch} -nl ${target.nl} -consoleLog -console"/>\r
<stringAttribute key="org.eclipse.jdt.launching.SOURCE_PATH_PROVIDER" value="org.eclipse.pde.ui.workbenchClasspathProvider"/>\r
-<stringAttribute key="org.eclipse.jdt.launching.VM_ARGUMENTS" value="-Djavax.ws.rs.ext.RuntimeDelegate=org.jboss.resteasy.spi.ResteasyProviderFactory -Dorg.eclipse.epp.logging.aeri.skipReports=true -Declipse.ignoreApp=true -Dosgi.noShutdown=true -Djobengine.jobsteps.root="${workspace_loc}/user.jobengine.executors/config" -Djobengine.jobtemplates.root="${workspace_loc}/user.jobengine.executors/jobtemplates" -Djobengine.db.url=jdbc:db2://10.10.1.27:50000/mc:retrieveMessagesFromServerOnGetMessage=true; -Djobengine.db.user=db2admin -Djobengine.db.password=password -Djobengine.loglevel=INFO -Dlog4j.configurationFile="${workspace_loc}/-configuration/log4j2.xml" -Djobengine.jobsteps.alternate.root="${workspace_loc}/user.jobengine.executors/bin/" -Djetty.home="${workspace_loc:}/-configuration/jetty" -Djetty.etc.config.urls=etc/user-jetty.xml,etc/user-jetty-ssl.xml,etc/user-jetty-ssl-context.xml,,etc/user-jetty-http.xml,etc/user-jetty-https.xml -Dorg.eclipse.jetty.webapp.basetempdir=c:\temp\jetty -Djava.io.tmpdir=c:\temp\jetty -Djobengine.octopus.api.address=http://10.10.1.11/api/v1 -Djobengine.octopus.api.user=mam -Djobengine.octopus.api.password=napocska -Djobengine.nosql.db.url=jdbc:db2://10.10.1.27:50000/mc:retrieveMessagesFromServerOnGetMessage=true; -Djobengine.nosql.db.user=db2admin -Djobengine.nosql.db.password=password -Djobengine.nosql.db.schema=test -Djobengine.selenio.address=http://10.10.1.71:44000/TranscodeMgrWS?wsdl -Djobengine.selenio.projectfilepath=\\10.10.1.71\Data\Blueprints\MP4_H264_AAC.zenium -Djobengine.jobscheduling.config="${workspace_loc}/-configuration/scheduledjobs.json" -Djobengine.nexio.db.url=jdbc:sqlserver://10.10.1.59:1433;databaseName=NXDB; -Djobengine.nexio.db.user=sa -Djobengine.nexio.db.password=resolve -Dnexio.host=10.10.1.55 -Djobengine.nexio.name=testnexioclips -Dnexio.useMOSGateway=true -Dnexio.disable=true -Djobengine.octopus.rundowns.name=rundowns181026 -Djobengine.octopus.storyfolders.name=storyfolders181026 -Djobengine.octopus.stories.name=stories181026 -Dmediacube.auth.location="${workspace_loc}/-configuration/mediacube-auth.properties""/>\r
+<stringAttribute key="org.eclipse.jdt.launching.VM_ARGUMENTS" value="-Djavax.ws.rs.ext.RuntimeDelegate=org.jboss.resteasy.spi.ResteasyProviderFactory -Dorg.eclipse.epp.logging.aeri.skipReports=true -Declipse.ignoreApp=true -Dosgi.noShutdown=true -Djobengine.jobsteps.root="${workspace_loc}/user.jobengine.executors/config" -Djobengine.jobtemplates.root="${workspace_loc}/user.jobengine.executors/jobtemplates" -Djobengine.db.url=jdbc:db2://10.10.1.27:50000/mc:retrieveMessagesFromServerOnGetMessage=true; -Djobengine.db.user=db2admin -Djobengine.db.password=password -Djobengine.loglevel=INFO -Dlog4j.configurationFile="${workspace_loc}/-configuration/log4j2.xml" -Djobengine.jobsteps.alternate.root="${workspace_loc}/user.jobengine.executors/bin/" -Djetty.home="${workspace_loc:}/-configuration/jetty" -Djetty.etc.config.urls=etc/user-jetty.xml,etc/user-jetty-ssl.xml,etc/user-jetty-ssl-context.xml,,etc/user-jetty-http.xml,etc/user-jetty-https.xml -Dorg.eclipse.jetty.webapp.basetempdir=c:\temp\jetty -Djava.io.tmpdir=c:\temp\jetty -Djobengine.octopus.api.address=http://10.10.1.11/api/v1 -Djobengine.octopus.api.user=mam -Djobengine.octopus.api.password=napocska -Djobengine.nosql.db.url=jdbc:db2://10.10.1.27:50000/mc:retrieveMessagesFromServerOnGetMessage=true; -Djobengine.nosql.db.user=db2admin -Djobengine.nosql.db.password=password -Djobengine.nosql.db.schema=test -Djobengine.selenio.address=http://10.10.1.71:44000/TranscodeMgrWS?wsdl -Djobengine.selenio.projectfilepath=\\10.10.1.71\Data\Blueprints\MP4_H264_AAC.zenium -Djobengine.jobscheduling.config="${workspace_loc}/-configuration/scheduledjobs.json" -Djobengine.nexio.db.url=jdbc:sqlserver://10.10.1.59:1433;databaseName=NXDB; -Djobengine.nexio.db.user=sa -Djobengine.nexio.db.password=resolve -Dnexio.host=10.10.1.55 -Djobengine.nexio.name=testnexioclips -Dnexio.useMOSGateway=true -Dnexio.disable=false -Djobengine.octopus.rundowns.name=rundowns181026 -Djobengine.octopus.storyfolders.name=storyfolders181026 -Djobengine.octopus.stories.name=stories181026 -Dmediacube.auth.location="${workspace_loc}/-configuration/mediacube-auth.properties""/>\r
<stringAttribute key="pde.version" value="3.3"/>\r
<booleanAttribute key="show_selected_only" value="false"/>\r
<stringAttribute key="target_bundles" value="cglib@default:default,com.auth0.java-jwt@default:default,com.fasterxml.jackson.core.jackson-annotations@default:default,com.fasterxml.jackson.core.jackson-core@default:default,com.fasterxml.jackson.core.jackson-databind@default:default,com.fasterxml.jackson.datatype.jackson-datatype-joda@default:default,com.fasterxml.jackson.jaxrs.jackson-jaxrs-base@default:default,com.fasterxml.jackson.jaxrs.jackson-jaxrs-json-provider@default:default,com.fasterxml.jackson.module.jackson-module-jaxb-annotations@default:default,com.google.guava@default:default,com.ibm.db2jcc4@default:default,com.ibm.nosql@default:default,com.microsoft.sqlserver.sqljdbc@default:default,com.sun.el.javax.el@default:default,commons-logging@default:default,humble.video.noarch@default:default,humble.video.windows@default:default,javax.annotation-api@default:default,javax.inject@default:default,javax.mail@default:default,javax.servlet-api@default:default,javax.servlet.jsp-api@default:default,javax.validation.api@default:default,javax.ws.rs-api@default:default,jcifs@default:default,joda-time@default:default,org.apache.aries.spifly.dynamic.bundle@default:default,org.apache.aries.util@default:default,org.apache.commons.beanutils@default:default,org.apache.commons.codec@default:default,org.apache.commons.collections@default:default,org.apache.commons.digester@default:default,org.apache.commons.io@default:default,org.apache.commons.lang3@default:default,org.apache.commons.lang@default:default,org.apache.commons.logging@default:default,org.apache.commons.net@default:default,org.apache.felix.gogo.command@default:default,org.apache.felix.gogo.runtime@default:default,org.apache.felix.gogo.shell@default:default,org.apache.httpcomponents.httpclient@default:default,org.apache.httpcomponents.httpcore@default:default,org.apache.jasper.glassfish@default:default,org.apache.logging.log4j.api@1:true,org.apache.logging.log4j.core@default:default,org.apache.logging.log4j.slf4j-impl@default:default,org.apache.servicemix.bundles.quartz@default:default,org.eclipse.equinox.common@2:true,org.eclipse.equinox.console@default:default,org.eclipse.equinox.ds@1:true,org.eclipse.equinox.util@default:default,org.eclipse.jetty.client@default:default,org.eclipse.jetty.deploy@default:default,org.eclipse.jetty.http@default:default,org.eclipse.jetty.io@default:default,org.eclipse.jetty.jsp@default:default,org.eclipse.jetty.osgi.boot.jsp@default:false,org.eclipse.jetty.osgi.boot@default:true,org.eclipse.jetty.schemas@default:default,org.eclipse.jetty.security@default:default,org.eclipse.jetty.server@default:default,org.eclipse.jetty.servlet@default:default,org.eclipse.jetty.util@default:default,org.eclipse.jetty.webapp@default:default,org.eclipse.jetty.websocket.api@default:default,org.eclipse.jetty.websocket.client@default:default,org.eclipse.jetty.websocket.common@default:default,org.eclipse.jetty.websocket.server@default:default,org.eclipse.jetty.websocket.servlet@default:default,org.eclipse.jetty.xml@default:default,org.eclipse.osgi.services@default:default,org.eclipse.osgi@-1:true,org.hamcrest.core@default:default,org.jboss.resteasy.client@default:default,org.jboss.resteasy.jaxrs@default:default,org.jmock.junit4@default:default,org.jmock@default:default,org.junit@default:default,org.objectweb.asm.commons@default:default,org.objectweb.asm.tree@default:default,org.objectweb.asm@default:default,slf4j.api@default:default,slf4j.simple@default:false"/>\r
<?xml version="1.0" encoding="UTF-8"?>\r
-<project\r
- xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"\r
- xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">\r
+<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"\r
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">\r
<modelVersion>4.0.0</modelVersion>\r
<groupId>hu.user.chronos</groupId>\r
<artifactId>hu.user.chronos.dependencies</artifactId>\r
<plugin>\r
<groupId>org.reficio</groupId>\r
<artifactId>p2-maven-plugin</artifactId>\r
- <version>1.3.0</version>\r
+ <version>1.2.0-SNAPSHOT</version>\r
<executions>\r
<execution>\r
<id>default-cli</id>\r
<configuration>\r
<artifacts>\r
-<!-- <artifact> -->\r
-<!-- <id>org.apache.solr:solr-sorlj:7.5.0</id> -->\r
-<!-- </artifact> -->\r
+ <!-- <artifact> -->\r
+ <!-- <id>org.apache.solr:solr-sorlj:7.5.0</id> -->\r
+ <!-- </artifact> -->\r
<artifact>\r
<id>humble.video:linux:0.2.1</id>\r
</artifact>\r
<artifact>\r
<id>com.google.guava:guava:18.0</id>\r
</artifact>\r
- \r
+\r
<artifact>\r
<id>com.fasterxml.jackson.core:jackson-core:${fasterxml-jackson-core}</id>\r
</artifact>\r
import java.sql.PreparedStatement;\r
import java.sql.ResultSet;\r
import java.sql.SQLException;\r
+import java.sql.Timestamp;\r
import java.util.HashMap;\r
import java.util.HashSet;\r
import java.util.List;\r
clip.put(VIDEOBITRATE, rs.getString(VIDEOBITRATE));\r
clip.put(VIDEOFORMAT, rs.getString(VIDEOFORMAT));\r
clip.put(DURATION, rs.getLong(DURATION));\r
- clip.put(MODIFIEDTIMESTAMP, rs.getTimestamp(MODIFIEDTIMESTAMP));\r
- clip.put(RECORDDATE, rs.getTimestamp(RECORDTIMESTAMP));\r
+\r
+ Timestamp record = rs.getTimestamp(RECORDTIMESTAMP);\r
+ clip.put(RECORDDATE, record);\r
+ //NEXIO GW modified date nem jo a regi klippeknel\r
+ Timestamp modified = rs.getTimestamp(MODIFIEDTIMESTAMP);\r
+ if (modified.before(record))\r
+ clip.put(MODIFIEDTIMESTAMP, record);\r
+ else\r
+ clip.put(MODIFIEDTIMESTAMP, modified);\r
clip.put(KILLDATE, rs.getTimestamp(KILLDATE));\r
collection.insert(clip);\r
count++;\r
} catch (Exception e) {\r
// System.out.println(e);\r
}\r
-\r
try {\r
- jsClip.put(KILLDATE, clip.getKillDate().getTime());\r
+ jsClip.put(MODIFIEDTIMESTAMP, clip.getModifiedTimestamp().getTime());\r
} catch (Exception e) {\r
// System.out.println(e);\r
}\r
try {\r
- jsClip.put(MODIFIEDTIMESTAMP, clip.getModifiedTimestamp().getTime());\r
+ jsClip.put(RECORDDATE, clip.getRecordDateTimestamp().getTime());\r
} catch (Exception e) {\r
// System.out.println(e);\r
}\r
+\r
try {\r
- jsClip.put(VIDEO_FORMAT, clip.getVideoFormat());\r
+ jsClip.put(KILLDATE, clip.getKillDate().getTime());\r
} catch (Exception e) {\r
// System.out.println(e);\r
}\r
try {\r
- jsClip.put(VIDEO_BITRATE, clip.getVideoBitrate());\r
+ jsClip.put(VIDEO_FORMAT, clip.getVideoFormat());\r
} catch (Exception e) {\r
// System.out.println(e);\r
}\r
try {\r
- String agency = new String(clip.getExtendedField(GetExtendedFieldCommand.FN_AGENCY), INexioAPI.ENCODING);\r
- jsClip.put(EXTAGENCY, agency);\r
+ jsClip.put(VIDEO_BITRATE, clip.getVideoBitrate());\r
} catch (Exception e) {\r
// System.out.println(e);\r
}\r
try {\r
- jsClip.put(RECORDDATE, clip.getRecordDateTimestamp().getTime());\r
+ String agency = new String(clip.getExtendedField(GetExtendedFieldCommand.FN_AGENCY), INexioAPI.ENCODING);\r
+ jsClip.put(EXTAGENCY, agency);\r
} catch (Exception e) {\r
// System.out.println(e);\r
}\r
String agency = jsonClip.getString(EXTAGENCY);\r
int duration = jsonClip.getInt(DURATION);\r
if (fileName != null && !"".equals(fileName)) {\r
- logger.debug("Found NEXIO clip: {} duration: {} agency: {}", fileName, duration, agency);\r
+ logger.info("Found NEXIO clip: {} duration: {} agency: {}", fileName, duration, agency);\r
this.saveClipIntoMongo(jsonClip);\r
} else {\r
logger.debug("Found NEXIO clip: {} XID IS MISSING!!", clip.getId());\r
private Xid xid = null;
private final NexioServerProtocol protocol;
private byte[] metadata = null;
- private Calendar timestamp = null;
+ private Calendar modified = null;
+ private Calendar record = null;
private long fileSize = -1;
ClipImpl(NexioServerProtocol protocol, Id id) {
@Override
public Calendar getModifiedTimestamp() throws ClipNotFoundException, IOException, ProtocolException {
- if (timestamp == null) {
- timestamp = protocol.executeGetExtendedFieldGetModifiedTimestamp(id);
- checkClipExists(timestamp);
+ if (modified == null) {
+ modified = protocol.executeGetExtendedFieldGetModifiedTimestamp(id);
+ checkClipExists(modified);
}
- return timestamp;
+ return modified;
}
@Override
public Calendar getRecordDateTimestamp() throws ClipNotFoundException, IOException, ProtocolException {
- if (timestamp == null) {
- //TODO
- timestamp = protocol.executeGetExtendedFieldGetModifiedTimestamp(id);
- //timestamp = protocol.executeGetExtendedFieldGetRecordDateTimestamp(id);
- checkClipExists(timestamp);
+ if (record == null) {
+ record = protocol.executeGetExtendedFieldGetRecordDateTimestamp(id);
+ checkClipExists(record);
}
- return timestamp;
+ return record;
}
@Override
package user.commons.nexio.server.protocol;
-import java.io.IOException;
-import java.nio.ByteBuffer;
-import java.nio.ByteOrder;
-import java.util.Calendar;
-
-public class GetExtendedFieldGetModifiedTimestampCommand extends Command {
-
- private final static byte[] GET_EXTENDED_FIELD = { (byte) 0xc9, (byte) 0xc3 };
+public class GetExtendedFieldGetModifiedTimestampCommand extends GetExtendedFieldTimestampCommand {
private final static byte[] EXTENDED_FIELD_NUMBER = { (byte) 20 };
- private byte[] buffer;
- private byte filetime[];
-
public GetExtendedFieldGetModifiedTimestampCommand(Connection connection) {
super(connection);
}
- private Calendar convertFromFILETIME(byte[] filetime) {
- Calendar result = Calendar.getInstance();
-
- ByteBuffer b = ByteBuffer.wrap(filetime);
- b.order(ByteOrder.LITTLE_ENDIAN);
- int lo = b.asIntBuffer().get(0);
- int hi = b.asIntBuffer().get(1);
-
- long wFILETIME = ((long) hi << 32) + lo;
-
- final long EPOCH_DIFF = 11644473600000L;
- final long ms_since_16010101 = wFILETIME / (10000);
- final long ms_since_19700101 = ms_since_16010101 - EPOCH_DIFF;
-
- result.setTimeInMillis(ms_since_19700101);
-
- return result;
- }
-
- public Calendar execute(Id id) throws IOException, ProtocolException {
-
- Calendar ret = null;
-
- connection.write(GET_EXTENDED_FIELD);
- connection.write(id.get().getBytes());
- connection.write(EXTENDED_FIELD_NUMBER);
- connection.flush();
-
- buffer = new byte[2];
- int c = connection.read(buffer, 0, 2);
- if (c < 2) {
- throw getException_InvalidResponseLength(c, 2, 2);
- }
-
- // Not found
- if (buffer[0] == (byte) 0xd0 && buffer[1] == (byte) 0xc3) {
- throw new ProtocolException("ID handle is not found!");
- } else
- // 1. Found
- if (buffer[0] == (byte) 0xdf && buffer[1] == (byte) 0xc3) {
-
- // 2. read NOF BYTES
- buffer = new byte[1];
- c = connection.read(buffer, 0, 1);
-
- int toRead = buffer[0];
- if (toRead != 8) {
- throw new ProtocolException("Invalid ModifiedTimeStamp's data length: " + toRead);
- } else {
- filetime = new byte[8];
- c = connection.read(filetime, 0, 8);
- if (c != 8) {
- throw getException_InvalidResponseLength(c, 8, 8);
- }
- ret = convertFromFILETIME(filetime);
- }
- }
- return ret;
+ @Override
+ protected byte[] getExtendedFieldNumber() {
+ return EXTENDED_FIELD_NUMBER;
}
}
package user.commons.nexio.server.protocol;
-import java.io.IOException;
-import java.nio.ByteBuffer;
-import java.nio.ByteOrder;
-import java.util.Calendar;
-
-public class GetExtendedFieldGetRecordDateTimestampCommand extends Command {
-
- private final static byte[] GET_EXTENDED_FIELD = { (byte) 0xc9, (byte) 0xc3 };
+public class GetExtendedFieldGetRecordDateTimestampCommand extends GetExtendedFieldTimestampCommand {
private final static byte[] EXTENDED_FIELD_NUMBER = { (byte) 0 };
- private byte[] buffer;
- private byte filetime[];
-
public GetExtendedFieldGetRecordDateTimestampCommand(Connection connection) {
super(connection);
}
- private Calendar convertFromFILETIME(byte[] filetime) {
- Calendar result = Calendar.getInstance();
-
- ByteBuffer b = ByteBuffer.wrap(filetime);
- b.order(ByteOrder.LITTLE_ENDIAN);
- int lo = b.asIntBuffer().get(0);
- int hi = b.asIntBuffer().get(1);
-
- long wFILETIME = ((long) hi << 32) + lo;
-
- final long EPOCH_DIFF = 11644473600000L;
- final long ms_since_16010101 = wFILETIME / (10000);
- final long ms_since_19700101 = ms_since_16010101 - EPOCH_DIFF;
-
- result.setTimeInMillis(ms_since_19700101);
-
- return result;
- }
-
- public Calendar execute(Id id) throws IOException, ProtocolException {
-
- Calendar ret = null;
-
- connection.write(GET_EXTENDED_FIELD);
- connection.write(id.get().getBytes());
- connection.write(EXTENDED_FIELD_NUMBER);
- connection.flush();
-
- buffer = new byte[2];
- int c = connection.read(buffer, 0, 2);
- if (c < 2) {
- throw getException_InvalidResponseLength(c, 2, 2);
- }
-
- // Not found
- if (buffer[0] == (byte) 0xd0 && buffer[1] == (byte) 0xc3) {
- throw new ProtocolException("ID handle is not found!");
- } else
- // 1. Found
- if (buffer[0] == (byte) 0xdf && buffer[1] == (byte) 0xc3) {
-
- // 2. read NOF BYTES
- buffer = new byte[1];
- c = connection.read(buffer, 0, 1);
-
- int toRead = buffer[0];
- if (toRead != 8) {
- throw new ProtocolException("Invalid ModifiedTimeStamp's data length: " + toRead);
- } else {
- filetime = new byte[8];
- c = connection.read(filetime, 0, 8);
- if (c != 8) {
- throw getException_InvalidResponseLength(c, 8, 8);
- }
- ret = convertFromFILETIME(filetime);
- }
- }
- return ret;
+ @Override
+ protected byte[] getExtendedFieldNumber() {
+ return EXTENDED_FIELD_NUMBER;
}
}
--- /dev/null
+package user.commons.nexio.server.protocol;
+
+import java.io.IOException;
+import java.nio.ByteBuffer;
+import java.nio.ByteOrder;
+import java.util.Calendar;
+
+public abstract class GetExtendedFieldTimestampCommand extends Command {
+ private final static byte[] GET_EXTENDED_FIELD = { (byte) 0xc9, (byte) 0xc3 };
+ private byte[] buffer;
+ private byte filetime[];
+
+ public GetExtendedFieldTimestampCommand(Connection connection) {
+ super(connection);
+ }
+
+ private Calendar convertFromFILETIME(byte[] filetime) {
+ Calendar result = Calendar.getInstance();
+
+ ByteBuffer b = ByteBuffer.wrap(filetime);
+ b.order(ByteOrder.LITTLE_ENDIAN);
+ int lo = b.asIntBuffer().get(0);
+ int hi = b.asIntBuffer().get(1);
+
+ long wFILETIME = ((long) hi << 32) + lo;
+
+ final long EPOCH_DIFF = 11644473600000L;
+ final long ms_since_16010101 = wFILETIME / (10000);
+ final long ms_since_19700101 = ms_since_16010101 - EPOCH_DIFF;
+
+ result.setTimeInMillis(ms_since_19700101);
+
+ return result;
+ }
+
+ public Calendar execute(Id id) throws IOException, ProtocolException {
+
+ Calendar ret = null;
+
+ connection.write(GET_EXTENDED_FIELD);
+ connection.write(id.get().getBytes());
+ connection.write(getExtendedFieldNumber());
+ connection.flush();
+
+ buffer = new byte[2];
+ int c = connection.read(buffer, 0, 2);
+ if (c < 2) {
+ throw getException_InvalidResponseLength(c, 2, 2);
+ }
+
+ // Not found
+ if (buffer[0] == (byte) 0xd0 && buffer[1] == (byte) 0xc3) {
+ throw new ProtocolException("ID handle is not found!");
+ } else
+ // 1. Found
+ if (buffer[0] == (byte) 0xdf && buffer[1] == (byte) 0xc3) {
+
+ // 2. read NOF BYTES
+ buffer = new byte[1];
+ c = connection.read(buffer, 0, 1);
+
+ int toRead = buffer[0];
+ if (toRead != 8) {
+ throw new ProtocolException("Invalid TimeStamp's data length: " + toRead);
+ } else {
+ filetime = new byte[8];
+ c = connection.read(filetime, 0, 8);
+ if (c != 8) {
+ throw getException_InvalidResponseLength(c, 8, 8);
+ }
+ ret = convertFromFILETIME(filetime);
+ }
+ }
+ return ret;
+ }
+
+ protected abstract byte[] getExtendedFieldNumber();
+}